PS命令
ps命令(process status)显示进程状态信息
ps命令支持的选项语法格式格式
- UNIX(SYSV)风格,选项可以组合,且选项前必须有“-”作为前导符
- BSD风格,选项可以组合,且选项前不能有“-”
- GNU风格,选项不能组合,且选项前必须有“–”作为前导符
# 下列3组命令分别等效
ps aux
ps a u x
ps -elL
ps -e -l -L
ps -el en
ps -e -l e n
ps命令解析UNIX/BSD风格选项的时,会将其拆分成独立的选项进行解析,所以不同风格语法的选项支持混用,但读者在后文中也应当注意区分这三种选项语法格式,便于更好的学习和使用ps命令。
常用选项
- -e | -A 显示所有终端下执行的进程,包含其他用户的进程
- -H 显示树状结构,表示程序间的相互关系
- -f 全格式显示进程
- r 只显示正在运行的进程
- [-]x 显示所有进程
- -a 显示所有终端下执行的进程,包含其他用户的进程
- c 显示进程真实名字
- [-]aux | -ef 详细显示所有用户的进程
- e 列出程序所使用的环境变量
显示所有进程
ps命令的所有信息都是linux kernel生成,并通过/proc/目录输出给用户空间的。在/proc/目录下,每一个以数字开头的目录,就对应一个进程信息。所以,我们可以通过以下命令验证-e | -A是否输出了所有进程。输出结果应该是相同的,读者可执行该命令自行验证。
pe -e | wc -l && ps -A | wc -l && ls /proc/ | grep '^[1-9]' | wc -l
在SIMPLE PROCESS SELECTION选项中BSD风格选项的特殊处理
- 在已有的BSD风格选项后额外增加一个g选项(g选项已过时)
- 将a、u、g三个选项替换为-e
这一特殊处理直接使ps aux和ps -ef等价
PROCESS SELECTIPON BY LIST选项的使用
- 进程ID选项
- 进程会话选项
- 用户组ID选项
- 进程名称选项
- 进程终端选项
全格式显示
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER:进程用户
- PID:进程号(process indentifier)
- %CPU:CPU占用率
- %MEM:内存占用率(memory)
- VSZ:占用虚拟内存大小
- RSS:占用内存大小
- TTY:终端号
- STAT:进程状态
- D(TASK_UNINTERRUPTIBLE):不可中断状态。在进程接收到信号时,不会被唤醒变成可运行的,用kill命令无法关闭这类进程。
- R(TASK_RUNNING):可执行状态。要么在运行,要么在等待运行
- S(TASK_INTERRUPTIBLE):中断状态。这个状态的进程因为等待某事件的发生(比如等待socket连接、等待信号量等)而被挂起,然后当这些事件发生或完成后,对应的等待队列中的一个或多个进程将被唤醒
- Z(TASK_DEAD或EXIT_ZOMBIE):退出状态。进程在退出的过程中,处于TASK_DEAD状态,如果它的父进程没有收到SIGCHLD信号,故未调用wait(如wait4、waitid)处理函数等待子进程结束,又没有显式忽略该信号,它就一直保持EXIT_ZOMBIE状态。只要父进程不退出,这个EXIT_ZOMBIE状态的子进程就一直存在,这也就是所谓的"僵尸"进程。
- T(TASK_STOPPED):暂停状态。该状态表示该进程已经停止执行,并且不具有再次执行的条件。
- <:高优先级进程
- N:低优先级进程
- START:进程启动时间
- TIME:进程持续时间
- COMMAND:执行的指令
常用用法
-
ps aux | grep python # 显示所有用户与“python”关键词有关的进程 ps -u root # 显示root用户的进程
-
ps -aux | less # 通过less命令使该命令返回的过长的结果便于查看
-
ps -aux --sort=-%cpu # 通过--sort选项对某列排序,+为升序,-为降序
-
ps -C bash # 过滤“CMD”列为“bash”的进程信息,即进程名为“bash”的进程信息 ps -L 2022 # 过滤“PID”列为“2022”的进程信息,即进程ID为“2022”的进程信息 ps -axf # 树形显示进程信息
参考资料:
发表回复