为什么 apache2 在进程列表中显示为已失效?

为什么 apache2 在进程列表中显示为已失效?

当我运行时,top我看到一行看起来不太好:

 2475 www-data  20   0     0    0    0 Z    1  0.0   0:00.19 apache2 <defunct> 

为什么是这个过程<defunct>以及我应该做什么?

答案1

它是无害的。你可以忽略它。这是一个僵尸进程。的手册页ps

Z    Defunct ("zombie") process, terminated but not reaped by its parent.

另请参阅维基百科页面僵尸进程

如果你真的想摆脱它,重新启动 apache2 可能会奏效。重新启动机器肯定会让它消失,但这绝对不是必要的。

这个问题是类似的。 -如何终止父进程为 init 的 <defunct> 进程?

答案2

失效的进程是僵尸进程。 Kill 命令对僵尸进程没有影响。这些可以通过终止父进程来终止。您可以从 PPID 值中找到父级。如果 PPID 为 1(init),即进程因init父进程不再存在而被调整,则重新启动是唯一的解决方案。

答案3

您可以SIGCHLD向父进程发送信号而不是杀死它。如果父进程使用此信号注册并wait调用系统调用,则该已失效的进程将被删除。

相关内容