进程状态 R / S / D / Z:各是什么意思
ps、top 里状态一栏通常是单个字母。理解它们,能少误会「程序死了」和「程序在等 I/O」。
常见状态
- R(Running / Runnable):正在跑,或在运行队列里等 CPU
- S(Interruptible sleep):可中断睡眠,等事件(常见,多数空闲进程是 S)
- D(Uninterruptible sleep):不可中断睡眠,多在等底层 I/O;kill -9 往往也立刻无效
- Z(Zombie):已退出,但父进程还没
wait,壳还在进程表里 - T:被停止(job control 或调试器)
卡住在 D 怎么办
D 状态本身不是「死机」,而是在等某个不会被信号打断的内核路径(常见是磁盘)。应查存储与驱动是否健康,而不是反复 kill。机器负载很高、磁盘异常时,会出现许多 D 进程。
僵尸进程
Z 几乎不占资源,可怕的是父进程长期不回收导致进程号耗尽。处理思路是修复或重启那个不 wait 的父进程;直接杀僵尸通常杀不掉,因为它已经退出了。
ps -eo pid,ppid,stat,cmd | awk '$3 ~ /Z/'
← 返回目录