Linux进程管理

本文详细介绍了Linux系统的进程管理,包括如何使用ps、top、pstree等工具查看进程状态,如查看当前登录bash进程、所有进程、僵尸进程,以及如何根据需要定制输出列。此外,还讲解了进程的管理,如使用kill和killall命令发送信号来管理进程。
摘要由CSDN通过智能技术生成

Linux进程管理

进程的查看

ps: 将某个时间点的进程运行情况打印出来
  • ps aux 查看系统所有的进程(BSD语法)
  • ps -lA(e) 较详细地查看系统所有进程(标准语法)
  • ps axjf 打印出系统所有进程,以进程树的方式打印出来

参数说明:

  • -A 所有进程都显示出来,与-e(every)具有同样的作用;
  • -a 不与terminal有关的所有进程;
  • -u 有效用户相关的进程;
  • -x 通常与-a这个参数一起用,可列出较完整的信息;
  • -p 通过指定的pid查看某个进程的信息;
  • -l(long format) 通常与-y选项一起使用;
  • -j(job format) 工作格式;
  • -f(full format) 做一个更为完整的输出,当和-L参数一起使用时,NLWP(number of threads)和LWP(thread ID)列会被添加;
仅查看当前登录bash相关的进程: ps -l

我们知道,当我们登录进行linux系统后,后续所有命令行的执行(即启动新的进程)都是当前bash进程的子进程,要想查看当前bash相关的进程可以用ps -l命令。

[root@vps ~]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 18313 18311  0  80   0 - 28878 wait   pts/2    00:00:00 bash
0 R     0 18331 18313  0  80   0 - 37233 -      pts/2    00:00:00 ps

输出结果说明:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
进程标志,说明进程的权限,如果为4,表示此进程的权限为root 进程运行状态 进程的UID 进程ID 父进程ID CPU使用率,单位为百分比 进程被CPU执行的优先级,数值越小越快被CPU执行 进程Nice值 进程在内存中的地址,如果是running,会显示’-‘ 进程使用的内存大小 进程是否在运行,若为’-‘则表示正在运行中 登录者的终端机位置,若为远程登录则使用动态终端接口(pts/n) 使用掉的CPU时间 启动该进程的命令行
查看系统所有进程: ps aux

默认情况下,ps aux显示的进程是以PID号由小到大排序列出来。

[root@vps ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3 125188  3368 ?        Ss   Oct15   1:08 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2  0.0  0.0      0     0 ?        S    Oct15   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Oct15   1:05 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Oct15   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    Oct15   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    Oct15   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        R    Oct15   4:25 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S    Oct15   0:27 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S    Oct15   0:00 [kdevtmpfs]

USER:该进程属于哪个账号的
PID:进程ID号
%CPU:进程使用CPU资源百分比
%MEM:进程占用物理内存百分比
VSZ:进程占用虚拟内存量(KB)
RSS:进程占用物理内存量(KB)
TTY:进程所在的终端接口,若与终端机无关,则显示?,另外tty1~tty6表示本机登陆接口,若为pts/n,则表示远程连接产生的进程
STAT:进程目前的状态
START:进程启动时间
TIME:进程实际使用CPU运行的时间
COMMAND:触发进程的命令行

找出系统中所有的僵尸进程: ps aux | grep 'defunct'

一个进程fork创建子进程,如果子进程退出,而父进程没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中,这中进程称之为僵尸进程。僵尸进程在ps aux命令显示中状态是Z,而且在CMD后面会有<defunct>标记,因此可以使用ps aux|grep 'defunct'来查看系统中所有的僵尸进程:

[root@vps ~]$ ps aux | grep defunct
root  3419  0.0  0.0      0     0 ?        Zs   Oct24   0:00 [sh] <defunct>
root  5468  0.0  0.0      0     0 ?        Z    Apr11   0:00 [sh] <defunct>
root  7655  0.0  0.0      0     0 ?        Z    Apr07   0:00 [sh] <defunct>
root  8542  0.0  0.0      0     0 ?        Zs   Oct23   0:00 [sh] <defunct>
root  9188  0.0  0.0      0     0 ?        Z    Apr07   0:00 [sh] <defunct>
root 14906  0.0  0.0      0     0 ?        Zs   Dec15   0:00 [sh] <defunct>
root 21702  0.0  0.0      0     0 ?        Z    Apr18   0:00 [sh] <defunct>
root 22620  0.0  0.0      0     0 ?        Z    May18   0:00 [sh] <defunct>
root 23905  0.0  0.0 112652   972 pts/0    R+   08:49   0:00 grep --color=auto defunct

有关僵尸进程及孤儿进程的更多深入的理解,请参考这篇文章

显示所需要的列: ps [OPTIONS] -o parm1,parm2,parm3 ...

一般用ps -ef或者ps aux显示出来的信息比较全,大多信息没什么用处,可以使用-o选项来控制想要输出的列。在ps的man page的STANDARD FORMAT SPECIFIERS章节可以查看其他支持的信息。

-o参数以逗号(,)作为定界符号。逗号与它分隔的参数直接是没有空格的。在大多数情况下,选项-o都是和-e选项结合使用的(-eo),因为需要它列出运行在系统中的每一个进程。但是如果-o需要使用某些过滤器,例如列出特定用户拥有的进程,那么就不在使用-e。-e和过滤器结果使用没有任何实际效果,依旧会显示所有进程。

-o参数支持的参数非常多,可以通过man ps查看STANDARD FOR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值