我的服务器中有 2 个僵尸进程正在运行,我无法使用 kill -9 命令杀死它们。
$ ps辅助| awk '{ 打印 $8 " " $2 }' | grep -w Z
输出:
Z 8511 Z 9002
有人可以建议我任何其他更好的方法来杀死他们。
谢谢,
桑迪普。
基本上 - 你不能。这不一定是坏事:
http://www.linuxsa.org.au/tips/zombies.html
僵尸是死进程。你不能杀死死者。所有进程最终都会死亡,当它们死亡时,它们就会变成僵尸。它们几乎不消耗资源,这是意料之中的,因为它们已经死了!僵尸的原因是僵尸的父(进程)可以检索僵尸的退出状态和资源使用统计信息。父进程通过使用 wait() 系统调用之一向操作系统发出它不再需要僵尸的信号。
当一个进程死亡时,它的子进程都成为进程号 1 的子进程,即 init 进程。Init“总是”等待孩子们死去,这样他们就不会像僵尸一样继续存在。
如果您有僵尸进程,则意味着这些僵尸进程尚未被其父进程等待(查看 ps -l 显示的 PPID)。你有三个选择: 修复父进程(让它等待);杀死父母;或与之共处。请记住,使用它并不难,因为僵尸在 ps 的输出中只占用了多一行。
如果你碰巧知道父进程,你可以对父进程 PID 发出这个命令:
kill -s SIGCHLD pid