我的服务器中运行了两个僵尸进程,我无法使用kill -9命令将其杀死。
$ ps aux | awk '{ print $8 " " $2 }' | grep -w Z
输出:
Z 8511 Z 9002
有人可以告诉我任何其他更好的方法来杀死他们。
谢谢,
和Sandeep。
答案 0 :(得分:8)
基本上 - 你不能。这不一定是坏事:
http://www.linuxsa.org.au/tips/zombies.html
僵尸是死的过程。你无法杀死死者。所有流程 最终死去,当他们这样做时,他们就变成了僵尸。他们消费 几乎没有资源,这是可以预料的,因为它们已经死了! 僵尸的原因是僵尸的父母(进程)可以 检索僵尸的退出状态和资源使用情况统计信息。该 父母通知操作系统它不再需要僵尸 通过使用其中一个wait()系统调用。
当一个进程死亡时,它的子进程都成为了进程的子进程 进程号1,这是init进程。 Init是“永远” 等待孩子们死去,这样他们就不会像僵尸一样。
如果你有僵尸进程,那就意味着那些僵尸还没有 等待他们的父母(看看ps -l显示的PPID)。您 有三个选择:修复父进程(让它等待);杀了 父母;或者和它一起生活。请记住,与它共处并不是那么难 因为僵尸在输出中只占用了一条额外的线 ps。
如果您碰巧知道父级,则可以针对父级PID发出此命令:
kill -s SIGCHLD pid