Kill -9 无法终止 Ubuntu 中的进程

Kill -9 无法终止 Ubuntu 中的进程

此进程被标记为<defunct>并且kill -9无法终止它。我该怎么办?为什么无法终止此进程?

答案1

这种过程被称为僵尸进程。kill 命令对僵尸进程无效。从技术上讲,它们已经死了,您之所以看到它们,只是因为它们在进程表中仍有条目。

要从系统中移除僵尸进程,SIGCHLD可以使用 kill 命令手动向父进程发送信号。如果父进程仍然拒绝收割僵尸进程,下一步就是移除父进程。当进程失去父进程时,init 将成为其新的父进程。Init 会定期执行 wait 系统调用来收割以 init 为父进程的任何僵尸进程。

答案2

Defunct 意味着它是一个僵尸进程 - 它实际上并不工作,它只是等待它的父进程调用来wait接收它的返回值。

wait函数可用于读取杀死僵尸进程的信号编号,因此它实际上是正确的行为。

要摆脱僵尸进程,你可以: - 杀死父进程(可能是控制台,你在那里输入命令) - 调用wait父进程 - 忽略父进程中的 SIGCHLD,如果你从未调用过wait

相关内容