通过单个命令杀死僵尸进程和 D 状态进程的最佳方法是什么。
答案1
双击。
实际上,重新启动。没有真正轻松摆脱僵尸的方法,但实际上也没有理由这样做,因为僵尸不会占用计算机资源;它是进程表中的孤立条目。Init 应该收集它,但进程出了问题。http://en.wikipedia.org/wiki/Zombie_process
也许你问这个问题是因为还有更糟糕的问题……你的进程表中是否有大量的僵尸进程?这通常意味着程序中存在错误或配置存在问题。你的系统上不应该有大量的僵尸进程。一两个我不担心。如果你有来自 Apache 或其他守护进程的五十个僵尸进程,那么你可能有问题。但这与你的问题没有直接关系……
答案2
/sbin/reboot
你无法杀死僵尸——它已经死了
如果 ppid 仍然存在,则终止它通常可以清理产生的僵尸进程。
您不应该在不可中断的睡眠状态下终止进程 - 通常这意味着它们受 i/o 限制,但 IIRC 它也可能发生在例如网络套接字的阻塞读取期间。
答案3
底层文件系统或磁盘中的错误可能会导致 I/O 绑定进程。在这种情况下,请尝试“umount -f”它们所依赖的文件系统 - 这将中止所有未完成的 I/O 请求。
答案4
下一句会杀死所有僵尸
ps -xal | grep defunct | awk '{ system (" kill -9 " $4 ) }'