ps 命令速查表 - Linux 进程管理常用命令大全

找不到进程、想知道谁吃内存、要拿一个 PID 交给 kill,排查第一步几乎总是 ps。表按基础查看、过滤进程、自定义输出、进程树、线程查看、常用场景六组组织,核心是分清 BSD 与 System V 两套语法:ps aux 显示用户、PID、CPU%、内存%、VSZ、RSS、TTY、状态与命令;ps -ef 用 -e 选全部进程、-f 输出完整格式,字段更少但兼容面更广。两者都能看到全部进程,但列的含义与排布不同,脚本里按需选一个即可,不要混着写参数。定位内存大户用 ps aux --sort=-%mem | head,注意 RSS 单位是 KB,别和 VSZ(虚拟内存,通常大得多)混淆——这是「进程占了几个 G」判断出错的主因。进程树一组看清父子关系,僵尸进程(状态 Z)无法 kill,必须处理其父进程或重启。

系统与运维·共 35 条命令·最后更新 2026-07-21
ps进程linux进程管理

基础查看 Basic 6

ps
查看当前终端的进程
ps aux
查看所有进程(BSD 风格)
ps -ef
查看所有进程(System V 风格)
ps -e
查看所有进程
ps -f
完整格式输出
ps -l
长格式输出

过滤进程 Filter 7

ps -p 1234
查看指定 PID 的进程
ps -p 1234,5678
查看多个 PID
ps -u username
查看指定用户的进程
ps -U username
查看指定真实用户的进程
ps -g groupname
查看指定组的进程
ps -C nginx
按命令名查看进程
ps --ppid 1234
查看指定父进程的子进程

自定义输出 Custom Format 7

ps -eo pid,comm,user
自定义输出列
ps -eo pid,ppid,comm,%cpu,%mem
查看 PID、父进程、命令、CPU 和内存
ps -eo pid,comm,etime
查看进程运行时间
ps -eo pid,comm,stat
查看进程状态
ps aux --sort=-%cpu
按 CPU 使用率降序
ps aux --sort=%mem
按内存使用率升序
ps aux --sort=-rss
按实际内存降序

进程树 Process Tree 5

ps -ejH
显示进程树(System V 风格)
ps axjf
显示进程树(BSD 风格)
pstree
显示进程树(需安装 psmisc)
pstree -p
显示进程树并显示 PID
pstree -u
显示进程树并显示用户

线程查看 Threads 4

ps -eLf
显示所有线程
ps -p 1234 -L
显示指定进程的线程
ps -eT
显示线程 ID
ps -H -p 1234
显示进程的线程层次

常用场景 Common Patterns 6

ps aux | grep nginx
查找 nginx 进程
ps aux --sort=-%cpu | head
查看 CPU 占用最高的进程
ps aux --sort=-%mem | head
查看内存占用最高的进程
ps -ef | grep defunct
查找僵尸进程
ps -eo pid,comm,etime | grep -v defunct
查看非僵尸进程及运行时间
ps -u username -o pid,comm,%cpu,%mem
查看指定用户的进程资源使用

命令示例

直接输出最耗 CPU 的 5 个进程

ps aux --sort=-%cpu | head -6

--sort 支持 -key 降序、key 升序。管道接 head 就能拿到 Top N,不必进交互式 top。

输出

USER  PID %CPU %MEM    VSZ   RSS TTY  STAT START   TIME COMMAND
root    1  0.0  0.1 168404 12164 ?    Ss   Aug29   0:03 systemd
tom   3120 48.2  8.1 1258300 318204 ?  Sl   10:12   2:14 node

查看进程树,找出是谁拉起的

pstree -p $(pgrep -f "node server.js")

pstree -p 显示 PID,能直观看出父进程是谁。排查「进程被谁启动的」「为什么杀了又起」这类问题时比 ps -ef 更直观。

输出

bash [1201]
├─ node [3120]
│  └─ node [3121]
└─ pm2 [1200]

按 CPU 列找出真正的资源大户

ps -eo pid,ppid,comm,%cpu,%mem --sort=-%cpu | head -10

-eo 自定义列,输出干净可控;加 ppid 能看出进程父子关系。ps aux 里那串长路径和启动参数对排序没有帮助。

输出

  PID  PPID COMMAND         %CPU %MEM
 3120  1200 node             48.2   8.1
 1452   840 chrome           18.2  12.4
 2031  1200 electron         12.7   6.8

常见坑与注意事项

  • ps aux | grep xxx 会把 grep 自身也列出来,需加 grep -v grep 或用 pgrep。
  • ps 只能看到当前时刻的瞬时状态,持续高占用要看 top -d 或 sar。
  • kill 默认发 SIGTERM 让进程优雅退出,加 -9 是 SIGKILL 强杀,会导致数据未落盘。
  • 僵尸进程(Z 状态)父进程已死,kill 子进程无效,需重启父进程或系统来回收。
  • ps -ef 与 ps aux 是两套格式,字段含义不同,脚本里混用容易解析错。

提示

  • ps aux 和 ps -ef 都能查看所有进程,aux 是 BSD 风格,-ef 是 System V 风格。
  • ps 显示的是快照,top/htop 显示的是实时信息。
  • 僵尸进程状态为 Z,不能 kill,只能 kill 其父进程或重启系统。
  • ps -eo pid,ppid,%cpu,%mem,etime,cmd --sort=-%cpu 里 etime 显示的是已运行时长(如 3-04:12 表示 3 天 4 小时),比 lstart 更易读。
  • ps -o pid,stat,cmd 过滤进程时用 stat 列判断状态,D 表示不可中断睡眠(常见于 IO 阻塞)、S 可中断睡眠、T 已停止,比只看命令行更有信息量。
  • ps --ppid <PID> 只列出某个父进程的直接子进程,比 pgrep -P 在需要精确一层关系时更快且不依赖额外工具。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们