无法清理父进程为init的僵尸进程

我有一个僵尸进程:

$ ps aux | grep Zl root 6641 122 0.0 0 0 ? Zl 08:57 371:10 [ovs_dpdk] <defunct> 

而且,它的父类看起来像init

 $ pstree init─┬─acpid ├─atd ├─cron ├─dbus-daemon ├─dnsmasq ├─6*[getty] ├─irqbalance ├─libvirtd───10*[{libvirtd}] ├─ovs_dpdk───{ovs_dpdk} <==== here ├─rpc.idmapd 

但是,kill -9不会杀死他

 sudo kill -9 6641 

我被困在这里,有什么帮助?

你不能杀僵尸,因为它已经死了。 🙂

严重的是,一个僵尸进程已经退出,所以没有什么可以杀死的。 它在进程表中的条目是悬在身边,直到创建(现在已死的)孩子的父母看到退出状态。

维基百科(还有谁?)对此有很好的讨论 。

您可以通过告诉其父母收获死亡孩子来移除SIGCHLD的进程条目:

 kill -s SIGCHLD PPID 

PPID是父进程ID。 与xmodulo人

僵尸是一个已经退出并且不再运行的进程,但是停留在进程表中,直到它的父“wait()s”为止,以获得它的退出状态。 杀死父母,或让它等待在孩子身上。

我如何杀死僵尸进程?

你不能杀僵尸,因为他们已经死了。 但是,如果你有太多的僵尸,然后杀死父进程或重新启动服务。

你可以杀死僵尸进程使用从任何一个上述命令获得的PID。 例如杀死具有PID 4104的僵尸进程:kill -9 4104

参考 – http://www.cyberciti.biz/tips/killing-zombie-process.html