在top和ps命令中有一列显示进程状态,分别有如下值:
值 |
含义 |
S |
进程处于interruptable sleep状态 |
D |
进程处于Uninterruptable sleep状态 |
R |
进程处于运行状态 |
Z |
进程处于僵尸状态 |
T |
Stop模式,进程要么处于被调试状态 |
【S进程】
进程等待某个资源处于sleep状态,此时可以通过发送信号将这个进程唤醒。例如发送kill 信号。
【D进程】
进程在内核中某些不能被信号打断,例如对某些硬件设备进行操作时刻(等待磁盘Io,等待网络io等等)。
进程处于D状态一般情况下很短暂,不应该被top或者ps看到。
如果进程在top和ps看到长期处于D状态,那么可能进程在等待IO时出现了问题导致进程一直等待不到IO资源,此时如果要处理掉这个D进程,那么只能重启整个系统才会恢复。因为此时整个进程无法被kill 掉。
【Z进程】
僵尸进程。
在Linux中,每个进程都有一个父进程,进程号叫PID(Process ID),父进程号叫PPID(Parent PID)。当进程死亡时,会关闭已经打开的文件,舍弃已经占用的内存,交换空间等公共资源,然后向父进程返回一个退出状态值,报告死讯。
如果在报告的过程中出了问题,父进程不知道子进程死了,子进程便变成了僵尸。
Linux中,可以通过杀死父进程的方式来让子进程消失。但是,僵尸进程并不占用任何资源,只是错误显示,如果父进程正在跑业务,千万不可以贸然杀死父进程。