张芷铭的个人博客

ps 命令提供系统进程快照,是 Linux 进程管理和故障排查的核心工具。

两种参数风格

特性UNIX 风格BSD 风格
前缀带短横线(如 -ef不带短横线(如 aux
常用命令ps -ef, ps -eFps aux, ps ax
输出侧重PID、PPID 等进程关系%CPU、%MEM、STAT 等资源信息

进程状态 STAT

ps aux 输出中的 STAT 列标明进程状态:

基本状态码

状态含义
R正在运行或在运行队列等待
S可中断睡眠,等待事件完成
D不可中断睡眠,通常在硬件 I/O
T已停止,收到 SIGSTOP 信号
Z僵尸进程,已终止但资源未回收

附加符号

符号含义
<高优先级
N低优先级
s会话领导者
l多线程进程
+位于前台进程组

常用场景

查找特定进程

1
2
ps -ef | grep nginx
ps aux | grep -i python

查看进程树

1
2
ps -ef --forest
ps -ejH  # 缩进方式显示

按资源占用排序

1
2
ps aux --sort=-%cpu | head -5  # CPU 降序
ps aux --sort=-%mem | head -5  # 内存降序

显示指定用户的进程

1
ps -u root

查看进程线程

1
2
ps -T -p <PID>   # 指定进程的线程
ps -eLf          # 所有线程

高级技巧

自定义输出字段

1
ps -eo pid,cmd,%mem

动态监控(结合 watch):

1
watch -n 1 'ps aux --sort=-%mem | head -5'

处理僵尸进程:找到并重启其父进程(PPID),直接 kill 僵尸进程无效。

与 top 的区别

  • ps:静态快照,适合精确筛选和脚本集成
  • top:动态实时更新,适合交互式监控

Comments