Linux 中的 ps 命令(Process Status)是系统管理和故障排查的核心工具,用于显示当前进程的快照信息。以下是其核心功能的深度解析:
进程列表展示
ps 仅显示当前终端关联的进程(非全系统)。PID TTY TIME CMD
1234 pts/0 00:00:01 bash
5678 pts/0 00:00:00 ps关键字段解析
PID:进程唯一标识符(kill 命令操作目标)TTY:进程所属终端(? 表示守护进程)STAT:进程状态码(如 S=休眠, R=运行, Z=僵尸)%CPU/%MEM:资源占用百分比显示所有进程
ps -e # 简略列表
ps -ef # 完整列表(带启动命令)
ps -eF # 扩展格式(含内存/CPU详情)
树形结构展示
ps -ejH # 显示进程层级关系
ps -e --forest # ASCII 树形图
自定义输出字段
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head # 按CPU排序
实时监控替代方案
watch -n 1 'ps -eo pid,cmd,%mem --sort=-%mem | head -n 5' # 每1秒刷新内存Top5
| 代码 | 含义 | 常见场景 |
|---|---|---|
R |
运行中/可运行 | 正在执行的进程 |
S |
可中断休眠 | 等待I/O完成的进程 |
D |
不可中断休眠 | 磁盘I/O等内核操作 |
Z |
僵尸进程 | 已终止但未回收 |
T |
暂停状态 | 被SIGSTOP暂停的进程 |
< |
高优先级 | nice值为负的进程 |
N |
低优先级 | nice值为正的进程 |
快速定位问题进程
ps aux | grep -E '(apache|mysql)' # 服务进程检查
资源占用分析
ps -eo pid,user,cmd,%cpu --sort=-%cpu | head -n 10 # CPU Top10
僵尸进程清理
ps -elf | grep 'Z' # 查找僵尸进程
kill -9 <PPID> # 终止其父进程
进程启动时间检查
ps -eo pid,lstart,cmd | grep nginx # 查看服务运行时长
与top的区别
ps 提供静态快照,top 为动态实时视图。
BSD vs UNIX语法
ps aux(BSD风格,不带-)ps -ef(UNIX风格)容器环境差异
在Docker容器内默认仅显示容器内进程,需添加 -e 显示全部。
通过灵活组合选项,ps 可满足从基础进程查看到复杂性能分析的需求,是Linux系统管理的瑞士军刀。建议通过 man ps 查阅完整的字段说明和语法变体。