Linux ps 命令参数完整说明
ps 有3种参数语法风格,不要混用搞混:
- UNIX风格:
-开头(ps -ef)
- BSD风格:不加
-(ps aux)
- GNU长参数:
--双横线(--forest)
一、最常用两大组合(你日常排查必用)
ps -ef(UNIX风格,你截图里用的)
-e:显示所有进程(等价 -A)
-f:full 完整格式,输出 UID/PID/PPID/STIME/CMD(父子进程排查首选)
ps aux(BSD风格,看CPU/内存占用)
a:所有终端下所有用户进程
u:显示用户、%CPU、%MEM、RSS内存
x:同时展示无终端后台进程(守护进程)
⚠️ 注意:不要写成 ps -aux,含义有差异!
二、UNIX 风格参数(带 -,System V,适合查进程树、PID关系)
1. 进程范围筛选
| 参数 | 作用 |
|---|
-e / -A | 列出系统全部进程 |
-a | 列出所有终端进程,排除会话首进程 |
-d | 所有进程,排除会话leader |
-N / --deselect | 反向选择,显示不匹配条件的进程 |
-p <pidlist> | 根据PID筛选进程:ps -p 1234,5678 |
-u <user> | 按有效用户筛选:ps -u root |
-U <user> | 按真实启动用户筛选 |
-t <tty> | 按终端筛选:ps -t pts/0 |
2. 输出格式控制
| 参数 | 作用 |
|---|
-f | 完整格式(UID PPID STIME CMD) |
-F | 更详细完整格式(额外增加内存字段) |
-l | 长格式,显示进程状态、优先级PRI/NI |
-y | 和 -l 搭配,不显示地址,展示RSS内存 |
-H | 显示进程层次(简易进程树) |
-o <格式> | 自定义输出列(超级常用) 示例:ps -eo pid,user,%cpu,cmd |
-w / -ww | 加宽输出,命令行不截断 |
-L | 显示线程(LWP轻量级进程) |
三、BSD 风格参数(不带 -,运维看资源占用)
| 参数 | 作用 |
|---|
a | 所有终端下所有用户进程 |
x | 包含无控制终端的后台进程(daemon) |
u | 用户友好格式:USER %CPU %MEM VSZ RSS START |
f | ASCII绘制进程树(ps axf) |
j | 会话、进程组信息 |
m | 按线程展示 |
w | 无限宽度,不截断长命令 |
四、GNU长参数(-- 开头,进阶功能)
| 参数 | 作用 |
|---|
--forest | 树形打印进程父子关系(推荐!) ps -ef --forest |
--sort=KEY | 排序 ps aux --sort=-%cpu 按CPU降序(负号=降序) ps aux --sort=-rss 按内存降序 |
--pid <PID> | 指定PID |
--ppid <PPID> | 根据父进程PID筛选子进程 |
--help | 查看完整手册 |
五、高频实战示例
# 1. 查找进程(常用)
ps -ef | grep xxx
# 2. 查看所有进程 + 树形父子结构
ps -ef --forest
# 3. 查看CPU占用前10进程
ps aux --sort=-%cpu | head -11
# 4. 只展示PID、用户、CPU、内存、启动命令(自定义列)
ps -eo pid,user,pcpu,pmem,start,cmd
# 5. 根据父进程ID,列出所有子进程
ps -ef --ppid 1234
# 6. 查看进程内所有线程
ps -eLf | grep 进程PID
六、重要补充区分:ps -ef vs ps aux
ps -ef:侧重进程关系(PPID父进程),排查进程是谁启动的;
ps aux:侧重资源指标(%CPU %MEM内存),定位程序卡死、资源泄漏;