在 linux 中杀死 Zombie 和 D 状态进程的最佳方法

vni*_*x27 16 linux process zombie

通过单个命令杀死 Zombie 进程和 D 状态进程的最佳方法是什么。

Bar*_*rim 23

双击。

实际上,重新启动。没有真正的方法可以轻松摆脱僵尸,但确实没有理由,因为僵尸不会占用计算机上的资源;它是进程表中的孤立条目。Init 应该收集它,但过程出了点问题。http://en.wikipedia.org/wiki/Zombie_process

也许你问是因为有更糟糕的问题......你是否有一大堆僵尸在你的进程表中漫游?这通常意味着程序中的错误或配置问题。系统上不应该有大量的僵尸。一两个我不担心。如果你有 50 个来自 Apache 或其他守护进程,你可能有问题。但这与您的问题没有直接关系......


sym*_*ean 18

/sbin/reboot
Run Code Online (Sandbox Code Playgroud)

你不能杀死僵尸——它已经死了

如果 ppid 仍然存在,那么终止它通常可以清理产生的僵尸。

你不应该在不间断的睡眠中杀死进程 - 通常这意味着它们是 i/o 绑定的,但是 IIRC 它也可能发生在从网络套接字等阻塞读取期间。


Ari*_*ouk 12

底层文件系统或磁盘中的错误可能会导致 I/O 绑定进程。在这种情况下,尝试“umount -f”它们依赖的文件系统——这将中止任何打开的未完成的 I/O 请求。

  • 无论如何,重启都会丢失数据。这样您就可以避免重启——生产或开发系统上的有用功能。 (6认同)
  • 并丢失数据。听起来不是个好主意。 (2认同)
  • 谢谢,这解决了我们在脚本尝试访问消失的 NFS 挂载数周时遇到的问题:) (2认同)
  • 现在我的 umount 进程被挂为僵尸 STAT "D+"! (2认同)