在 Linux 系统中,查看进程状态主要通过以下命令实现,以下是详细说明和常用示例:
ps
命令(最常用)功能:查看当前进程的快照。
常用组合:
ps aux # 查看所有用户的所有进程(BSD风格)
ps -ef # 查看所有进程(标准UNIX风格)
ps -o pid,ppid,cmd,%cpu,%mem,stat # 自定义输出列(包括进程状态)
输出关键字段:
- STAT
(进程状态码):
- R
:运行中(Running)
- S
:可中断睡眠(Sleeping)
- D
:不可中断睡眠(通常与IO相关)
- T
:停止(Stopped)
- Z
:僵尸进程(Zombie)
- <
:高优先级进程
- N
:低优先级进程
- s
:会话领导者(Session leader)
top
/ htop
(动态监控)功能:实时显示进程状态和资源占用。
top # 默认动态视图(按q退出)
htop # 增强版(需安装,支持交互式操作)
关键操作:
- 按 P
按CPU排序,M
按内存排序。
- 直接显示 STAT
列(状态码同 ps
)。
pstree
(树形结构)功能:以树状图显示进程父子关系。
pstree -p # 显示PID和层次结构
pgrep
/ pkill
(按名称操作)pgrep -l nginx # 查找名为"nginx"的进程及PID
pkill nginx # 终止名为"nginx"的进程
cat /proc/<PID>/status # 查看指定进程的详细状态(包括内存、信号等)
示例:
cat /proc/1234/status | grep State # 提取进程1234的状态
systemctl
(系统服务进程)systemctl status nginx # 查看系统服务的状态(如systemd管理的进程)
STAT
为 Z
,需找到其父进程并重启。top
定位后,通过 kill
或调整优先级(renice
)处理。根据需求选择合适的命令组合,如需进一步分析进程资源占用,可结合 vmstat
、iotop
等工具。