无法使用kill -9杀死僵尸进程

时间:2013-06-28 05:05:51

标签: linux ubuntu

我的服务器中运行了两个僵尸进程,我无法使用kill -9命令将其杀死。

$ ps aux | awk '{ print $8 " " $2 }' | grep -w Z

输出:

Z 8511 Z 9002

有人可以告诉我任何其他更好的方法来杀死他们。

谢谢,

和Sandeep。

1 个答案:

答案 0 :(得分:8)

基本上 - 你不能。这不一定是坏事:

  

http://www.linuxsa.org.au/tips/zombies.html

     

僵尸是死的过程。你无法杀死死者。所有流程   最终死去,当他们这样做时,他们就变成了僵尸。他们消费   几乎没有资源,这是可以预料的,因为它们已经死了!   僵尸的原因是僵尸的父母(进程)可以   检索僵尸的退出状态和资源使用情况统计信息。该   父母通知操作系统它不再需要僵尸   通过使用其中一个wait()系统调用。

     

当一个进程死亡时,它的子进程都成为了进程的子进程   进程号1,这是init进程。 Init是“永远”   等待孩子们死去,这样他们就不会像僵尸一样。

     

如果你有僵尸进程,那就意味着那些僵尸还没有   等待他们的父母(看看ps -l显示的PPID)。您   有三个选择:修复父进程(让它等待);杀了   父母;或者和它一起生活。请记住,与它共处并不是那么难   因为僵尸在输出中只占用了一条额外的线   ps。

如果您碰巧知道父级,则可以针对父级PID发出此命令:

kill -s SIGCHLD pid