灬小肥狗灬
1
灬小肥狗之家灬

【原创】ps命令详解

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风格选项的特殊处理

  1. 在已有的BSD风格选项后额外增加一个g选项(g选项已过时)
  2. 将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:执行的指令

常用用法

  1. ps aux | grep python    # 显示所有用户与“python”关键词有关的进程  
    ps -u root  # 显示root用户的进程
  2. ps -aux | less  # 通过less命令使该命令返回的过长的结果便于查看
  3. ps -aux --sort=-%cpu  # 通过--sort选项对某列排序,+为升序,-为降序
  4. ps -C bash  # 过滤“CMD”列为“bash”的进程信息,即进程名为“bash”的进程信息
    ps -L 2022  # 过滤“PID”列为“2022”的进程信息,即进程ID为“2022”的进程信息
    ps -axf  # 树形显示进程信息

参考资料:

  1. Linux-ps命令学习 – 简书
  2. 史上最全 Linux ps 命令详解 – 掘金

灬小肥狗灬

文章作者

发表回复

textsms
account_circle
email

1 × 1 =

灬小肥狗之家灬

【原创】ps命令详解
PS命令 ps命令(process status)显示进程状态信息 ps命令支持的选项语法格式格式 UNIX(SYSV)风格,选项可以组合,且选项前必须有“-”作为前导符 BSD风格,选项可以组合,且选项前不能…
扫描二维码继续阅读
2022-03-04