我有一个僵尸进程:
$ 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