Linux 为我们提供了一个名为 ps
的实用程序,用于查看与系统上的进程相关的信息,它是 Process Status
的缩写
这份 ps
命令备忘清单的快速参考列表,包含常用选项和示例。
入门
语法
1 | $ ps [options] |
命令运行示例,列出当前 shell 中的所有进程:
1 | $ ps |
:– | – |
---|---|
PID |
唯一的进程 ID |
TTY |
用户登录的终端类型 |
TIME |
进程运行的 CPU 数量,以分钟和秒为单位 |
CMD |
启动进程的命令的名称 |
注意:有时当我们执行 ps
命令时,它显示 TIME
为 00:00:00
ps 命令支持 3 种使用语法风格
Unix
可以分组并以连字符开头BSD
可以分组但前面没有连字符GNU
长选项,前面有双连字符
示例
Option | Function |
---|---|
ps -ef / -aux |
以完整格式列出当前正在运行的进程 |
ps -ax |
列出当前正在运行的进程 |
ps -u <username> |
列出特定用户的进程 |
ps -C <command> |
列出给定命令的进程 |
ps -p <PID> |
列出具有给定 PID 的进程 |
ps -ppid <PPID> |
列出具有给定 ppid 的进程 |
pstree |
在层次结构中显示过程 |
ps -L |
列出特定进程的所有线程 |
ps --sort pmem |
查找内存泄漏 |
ps -eo |
显示安全信息 |
ps T |
允许您仅选择与此终端关联的所有进程 |
ps -U root -u root u |
显示由 root 运行的进程 |
查看系统上的每个进程
要使用标准语法查看系统上的每个进程:
1 | $ ps -e # 列出所有进程 |
要使用 BSD 语法查看系统上的每个进程:
1 | $ ps ax # 以 BSD 格式列出所有进程 |
打印进程树
1 | $ ps -ejH |
仅打印 PID 42 的名称
1 | $ ps -q 42 -o comm= |
获取有关线程的信息
1 | $ ps -eLf |
列出当前用户拥有的所有进程
1 | $ ps x |
获取安全信息
1 | $ ps -eo euser,ruser,suser,fuser,f,comm,label |
查看以 root 身份运行的每个进程
查看以 root 身份运行的每个进程(真实且有效的 ID)用户格式:
1 | $ ps -U root -u root u |
查看具有用户定义格式的每个进程
1 | $ ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm |
仅打印 syslogd 的进程 ID
1 | $ ps -C syslogd -o pid= |
显示面向用户的格式
1 | $ ps u |
列出具有完整格式的进程
1 | $ ps f |
显示虚拟内存格式
1 | $ ps v |
按有效用户 ID 或名称显示进程
1 | $ ps -u user[name or id] |
按真实用户 ID 或名称显示进程
1 | $ ps -U user[name or id] |
按实际组 ID 或名称显示进程
1 | $ ps -G group[name or id] |
隐藏 ps 命令输出的标题
1 | $ ps h |
显示命令后的环境
1 | $ ps e |
重复 ps 命令输出的标题行
1 | $ ps --headers -A |
显示进程树
1 | $ ps --forest -A |
您可以使用 -H 选项打印进程层次结构
1 | $ ps -H -A |
评论