Linux系统管理---进程管理(查看进程、终止进程、更改进程优先级)

简介: 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/77587740

查看进程

ps

  • ps aux

查看所有进程,使用BSD操作系统格式

  • ps -le

查看系统所有进程,使用Linux标准命令格式


参数
- a :显示一个终端的所有进程,
- u :显示进程的归属用户及内存的使用情况
- x :显示没有控制终端的进程
- -l :长格式显示。显示更加详细的信息
- -e :显示所有进程,和-A作用一致

输出:

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19348  1616 ?        Ss   Aug01   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Aug01   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Aug01   0:00 [migration/0
root          4  0.0  0.0      0     0 ?        S    Aug01   0:00 [ksoftirqd/0
root          5  0.0  0.0      0     0 ?        S    Aug01   0:00 [stopper/0]
root          6  0.0  0.0      0     0 ?        S    Aug01   0:00 [watchdog/0]
root          7  0.1  0.0      0     0 ?        S    Aug01   0:37 [events/0]
root          8  0.0  0.0      0     0 ?        S    Aug01   0:00 [events/0]
...
AI 代码解读
参数 含义
USER 该进程是由哪个用户产生的
PID 进程的ID号
%CPU 改进程占用的CPU资源的百分比,占用越高,进程越耗费资源
%MEM 该进程占用的物理内存的百分比,占用越高,进程越耗费资源
VSZ 该进程占用的虚拟内存大小,单位是KB
RSS 该进程占用的物理内存大小,单位是KB
TTY 该进程是在哪个终端中运行的。tty1-tty7表示本地控制台,pts/0-255表示虚拟终端
STAT 进程状态。常见状态有 R:运行 S:睡眠 T:停止状态 s:包含子进程 +:位于后台
START 该进程的启动时间
TIME 该进程占用CPU的运算时间,不是系统时间
COMMAND 产生此进程的命令名

pstree 命令

显示进程树

  • -p:显示进程的PID
  • -u:显示进程的所属用户

执行结果如下:

[root@localhost ~]# pstree -up
init(1)─┬─NetworkManager(1581)─┬─dhclient(3561)
        │                      └─{NetworkManager}(1645)
        ├─abrtd(1960)
        ├─acpid(1680)
        ├─atd(1987)
        ├─auditd(1462)───{auditd}(1463)
        ├─automount(1767)─┬─{automount}(1768)
        │                 ├─{automount}(1769)
        │                 ├─{automount}(1772)
        │                 └─{automount}(1775)
        ├─certmonger(2003)
        ├─console-kit-dae(2584)─┬─{console-kit-da}(2585)
        │                       ├─{console-kit-da}(2586)
        │                       ├─{console-kit-da}(2587)
        │                       ├─{console-kit-da}(2588)
        │                       ├─{console-kit-da}(2589)
        │                       ├─{console-kit-da}(2590)
        │                       ├─{console-kit-da}(2591)
        │                       ├─{console-kit-da}(2592)
        ├─crond(1972)
        ├─cupsd(1647)
        ├─dbus-daemon(1567,dbus)───{dbus-daemon}(1570)
        ├─hald(1692,haldaemon)─┬─hald-runner(1693,root)─┬─hald-addon-acpi(1738,haldaemon)
        │                      │                        └─hald-addon-inpu(1737)
        │                      └─{hald}(1694)
        ├─login(3126)───bash(3166)
        ├─master(1931)─┬─pickup(21672,postfix)
        │              └─qmgr(1942,postfix)
        ├─mingetty(2050)
        ├─mingetty(2052)
        ├─mingetty(2054)
        ├─mingetty(2056)
        ├─mingetty(2064)
        ├─modem-manager(1588)
        ├─polkitd(2720)
        ├─rpc.statd(1604,rpcuser)
        ├─rpcbind(1547,rpc)
        ├─rsyslogd(1496)─┬─{rsyslogd}(1497)
        │                ├─{rsyslogd}(1498)
        │                └─{rsyslogd}(1499)
        ├─sshd(1835)───sshd(21691)───bash(21695)───pstree(21739)
        ├─udevd(548)─┬─udevd(2062)
        │            └─udevd(2063)
        └─wpa_supplicant(1648)
AI 代码解读

top 命令

查看系统健康状态

参数
- -d: 秒数:指定top命令每隔几秒更新。默认3秒
- -b: 使用批处理模式输出,一般和 - n合用
- -n: 次数:指定top命令执行的次数。一般和-b合用

交互命令:
- ?或h:显示帮助信息
- P:以CPU使用率排序,默认是此选项
- M:以内存使用率排序
- N:以PID排序
- q:退出top

[root@localhost ~]# top
top - 02:42:13 up  9:01,  2 users,  load average: 0.06, 0.04, 0.05
Tasks:  97 total,   1 running,  96 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.4%sy,  0.0%ni, 99.0%id,  0.4%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   1004136k total,   824820k used,   179316k free,    39408k buffers
Swap:  2031612k total,        0k used,  2031612k free,   596492k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND              
     7 root      20   0     0    0    0 S  2.0  0.0   0:39.59 events/0              
     1 root      20   0 19348 1616 1304 S  0.0  0.2   0:02.90 init                  
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd              
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0           
     4 root      20   0     0    0    0 S  0.0  0.0   0:00.12 ksoftirqd/0           
     5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0             
     6 root      RT   0     0    0    0 S  0.0  0.0   0:00.12 watchdog/0            
     8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/0              
     9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long/0         
    10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef       
    11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup                
    12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper               
    13 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns                 
    14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr             
    15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm                    
    16 root      20   0     0    0    0 S  0.0  0.0   0:00.27 sync_supers           
    17 root      20   0     0    0    0 S  0.0  0.0   0:00.25 bdi-default           
    18 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0
AI 代码解读

第一行

内容 说明
02:42:13 系统当前时间
up 9:01 系统的运行时间
2 users 当前用户数
load average: 0.06, 0.04, 0.05 系统在之前1分钟、5分钟、15分钟的平均负载。

第二行

内容 说明
Tasks: 97 total 系统中的进程总数
1 running 正在运行的进程数
96 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程

第三行

内容 说明
Cpu(s): 0.2%us 用户模式占用的CPU百分比
0.4%sy 系统模式占用的CPU百分比
0.0%ni 改变过优先级的用户进程占用的CPU百分比
99.0%id 空闲的CPU百分比
0.4%wa 等该输入/输出的进程占用百分比
0.0%hi 硬中断请求服务占用的CPU百分比
0.1%si 软中断请求服务占用的CPU百分比
0.0%st st(Steal time)虚拟时间百分比,就是当有虚拟机时,虚拟机CPU等待实际CPU的时间百分比

第四行

内容 说明
Mem: 1004136k total 物理内存的总量,单位KB
824820k used 已经使用的物理内存数量
179316k free 空闲的物理内存数量
39408k buffers 作为缓冲区的内存数量

第五行

内容 说明
Swap: 2031612k total 交换分区(虚拟内存)的总大小
824820k used 已经使用的交换分区的大小
0k used 已经使用的交换分区的大小
2031612k free 空闲交换分区的大小
596492k cached 作为环迅的交换分区的大小

终止进程

kill -l 命令

  • kill -[信号] pid
    根据进程id杀死单一进程

常见信号如下:

信号代码 信号名称 说明
1 SIGHUP 平滑重启,关闭进程,重新读取配置文件后重启
9 SIGNKILL 进程法伤问题时,强制结束进程
15 SIGTERM 正常结束的金浩,kill命令的默认信号

杀死pid为14942的进程:

kill -1 14942
kill -HUP 14942 
AI 代码解读

killall 命令

  • killall [信号] [选项] 进程名
    按照进程名杀死进程

选项:
- -i 交互式。询问是否要杀死某个进程
- -I 忽略进程名的大小写

杀死tomcat进程:

killall -9 -I java
AI 代码解读

pkill 命令

  • pkill [信号] [选项] 进程名
    按照进程名杀死进程

该命令的作用与killall类似,只是多出了一个按照终端号结束用户终端的功能
- -t 终端号: 按照终端号踢出用户。 只有root用户可以操作

w命令查看当前用户。可知有一个本地终端和两个远程终端。WHAT表示该终端正在执行的命令。pts/1是当前终端的终端号。

[root@localhost bin]# w
 17:10:02 up 50 min,  3 users,  load average: 0.71, 0.21, 0.07
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                16:24   41:19   0.15s  0.15s -bash
twilight pts/0    192.168.226.1    16:27   42:17   0.08s  0.08s -bash
root     pts/1    192.168.226.1    16:29    0.00s  0.33s  0.05s w
AI 代码解读

根据终端号杀死pts/0用户的终端:

pkill -9 -t pts/0
AI 代码解读

修改进程优先级

ps -le可以查看所有进程的信息,其中包括进程的优先级。PRI表示priority,NI表示nice。两个都是有点急,数字越小代表优先级越高。

注意事项:
- NI的范围是-20 到 19
- 普通用户调整NI值得范围是0~19,而且只能调整自己的进程
- 普通用户只能调高NI值,而不能降低
- root用户才能设定进程NI值为负值,而且可以调整任何用户的进程
- PRI(最终值) = PRI(原始值) + NI
- 用户只能修改NI的值,不能直接修改PRI

nice 命令

  • nice [选项] 命令
    nice可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值。

选项:
- -n NI值: 给命令赋予NI值

例如:

nice -n -5 service httpd start
AI 代码解读

renice 命令

  • renice [优先级] PID
    修改已经存在的进程的NI值的命令

例如:

renice -10 2125
AI 代码解读
目录
打赏
0
0
0
0
1
分享
相关文章
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
9天前
|
Linux系统管理:服务器时间与网络时间同步技巧。
以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
48 20
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
144 1
【YashanDB 知识库】如何避免 yasdb 进程被 Linux OOM Killer 杀掉
本文来自YashanDB官网,探讨Linux系统中OOM Killer对数据库服务器的影响及解决方法。当内存接近耗尽时,OOM Killer会杀死占用最多内存的进程,这可能导致数据库主进程被误杀。为避免此问题,可采取两种方法:一是在OS层面关闭OOM Killer,通过修改`/etc/sysctl.conf`文件并重启生效;二是豁免数据库进程,由数据库实例用户借助`sudo`权限调整`oom_score_adj`值。这些措施有助于保护数据库进程免受系统内存管理机制的影响。
【Linux】进程概念和进程状态
本文详细介绍了Linux系统中进程的核心概念与管理机制。从进程的定义出发,阐述了其作为操作系统资源管理的基本单位的重要性,并深入解析了task_struct结构体的内容及其在进程管理中的作用。同时,文章讲解了进程的基本操作(如获取PID、查看进程信息等)、父进程与子进程的关系(重点分析fork函数)、以及进程的三种主要状态(运行、阻塞、挂起)。此外,还探讨了Linux特有的进程状态表示和孤儿进程的处理方式。通过学习这些内容,读者可以更好地理解Linux进程的运行原理并优化系统性能。
36 4
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
103 34
|
1月前
|
Linux:守护进程(进程组、会话和守护进程)
守护进程在 Linux 系统中扮演着重要角色,通过后台执行关键任务和服务,确保系统的稳定运行。理解进程组和会话的概念,是正确创建和管理守护进程的基础。使用现代的 `systemd` 或传统的 `init.d` 方法,可以有效地管理守护进程,提升系统的可靠性和可维护性。希望本文能帮助读者深入理解并掌握 Linux 守护进程的相关知识。
49 7
|
1月前
|
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
55 5
Linux 进程管理基础
Linux 进程是操作系统中运行程序的实例,彼此隔离以确保安全性和稳定性。常用命令查看和管理进程:`ps` 显示当前终端会话相关进程;`ps aux` 和 `ps -ef` 显示所有进程信息;`ps -u username` 查看特定用户进程;`ps -e | grep <进程名>` 查找特定进程;`ps -p <PID>` 查看指定 PID 的进程详情。终止进程可用 `kill <PID>` 或 `pkill <进程名>`,强制终止加 `-9` 选项。
27 3
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
72 16