【kill】kill -9 杀不死的进程处理办法

kill -9 发送SIGKILL信号给进程将其终止,但对于以下两种情况不适用:

1.该进程是僵尸进程(STAT z),此时进程已经释放所有的资源,但是没有被父进程释放。

僵尸进程要等到父进程结束,或者重启系统才可以被释放。

2.进程处于“内核态”,并且在等待不可获得的资源,处于“内核态 ”的资源默认忽略所有信号,只能重启系统解决。

进程在Linux 中会处于两种状态,即用户态和内核态。只有处于用户态的进程才可以用“kill”命令将其终止  


一般可以用top命令发现动态进程表,其中zombie是僵尸进程:

用ps和grep命令寻找僵尸进

# ps -A -o  stat,ppid,pid,cmd

#  ps  -A  -o  stat,ppid,pid,cmd | grep -e  '^[Zz]'


命令注解:

-A 参数列出所有进程

-o 自定义输出字段 

我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数 因为状态为 z或者Z的进程为僵尸进程。

我们使用grep抓取stat状态为zZ进程,使用 kill  -HUP ${pid} 来杀掉这个僵尸进程。

你可能感兴趣的:(【kill】kill -9 杀不死的进程处理办法)