在top和ps命令中有一列显示进程状态,分别有如下值
值 | 含义 | 备注 |
---|---|---|
S | 进程处于interruptable sleep状态 | na |
D | 进程处于Uninterruptable sleep状态 | na |
R | 进程处于运行状态 | na |
Z | 进程处于僵尸状态 | na |
T | Stop模式,进程要么处于被调试状态 | na |
interruptable sleep vs uninterruptable sleep
- interruptable sleep
进程等待某个资源处于sleep状态,此时可以通过发送信号将这个进程唤醒。例如发送kill 信号。 - uninterruptable sleep
进程在内核中某些不能被信号打断,例如对某些硬件设备进行操作时刻(等待磁盘Io,等待网络io等等)。进程处于D状态一般情况下很短暂,不应该被top或者ps看到。如果进程在top和ps看到长期处于D状态,那么可能进程在等待IO时出现了问题导致进程一直等待不到IO资源 此时如果要处理掉这个D进程,那么只能重启整个系统才会恢复。因为此时整个进程无法被kill 掉。