1. Linux 进程状态 R、S、D、Z、T 的含义及典型场景
Linux 进程状态 R、S、D、Z、T 分别代表什么?各自典型场景是什么?
- 各进程状态语义
- 典型场景
- 排障意义
R(running):进程在运行或可运行队列中,消耗 CPU;S(sleeping):可中断睡眠,等待 I/O 或事件(如等待网络、定时器),能被信号唤醒;D(uninterruptible sleep):不可中断睡眠,多为等待磁盘 I/O(内核态,无法被信号中断),大量 D 状态常表示磁盘 IO 瓶颈;Z(zombie):僵尸进程,子进程已退出但父进程未 wait() 回收,占 PID 不占资源,过多僵尸说明父进程未回收;T(stopped):进程被停止(如 Ctrl-Z 或 SIGSTOP),暂停执行。典型场景:R 是 CPU 密集负载;S 是正常等待(绝大多数进程);D 是磁盘/IO 等待(IO wait 高时多);Z 是父进程未回收子进程(僵尸);T 是调试/暂停。排障:top 看状态分布,D 多查 IO,Z 多查父进程。
核心是"状态语义 + 场景映射"。R 运行、S 可中断等待、D 不可中断 IO 等待、Z 僵尸、T 停止,D/Z 多需重点排查。
ps -eo stat,pid,comm | sort | uniq -c
top -b -n1 | grep -E 'R|D|Z'
# 查僵尸进程
ps -eo stat,pid,ppid,comm | awk '$1~/Z/'