init永远不会收获僵尸/失效进程

时间:2009-12-15 14:19:43

标签: fedora init zombie-process defunct

在我的带有内核2.6.18的Fedora Core 9网络服务器上,init并没有收获僵尸进程。如果进程表最终没有达到可以分配新进程的上限,这将是可以忍受的。

ps -el | grep 'Z'的示例输出:

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
5 Z     0  2648     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
1 Z    51  2656     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
1 Z     0  2670     1  0  75   0 -     0 exit   ?        00:00:02 crond <defunct>
4 Z     0  2874     1  0  82   0 -     0 exit   ?        00:00:00 mysqld_safe <defunct>
5 Z     0 28104     1  0  76   0 -     0 exit   ?        00:00:00 httpd <defunct>
5 Z     0 28716     1  0  76   0 -     0 exit   ?        00:00:06 lfd <defunct>
5 Z    74 10172     1  0  75   0 -     0 exit   ?        00:00:00 sshd <defunct>
5 Z     0 11199     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11202     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11205     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11208     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11211     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11240     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11246     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11249     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11252     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
1 Z     0 14106     1  0  80   0 -     0 exit   ?        00:00:00 anacron <defunct>
5 Z     0 14631     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>

这是操作系统错误吗?配置错误?我正在寻找关于这个问题的根源的灵感。 感谢

1 个答案:

答案 0 :(得分:2)

这在Ubuntu上以两种方式打击了我:

  1. 内核出了问题。在我的情况下,一个内核驱动程序崩溃了,进程内部发生了疯狂。测试它的最好方法是检查/ var / log / syslog(和dmesg)以查看是否有任何错误 - 例如“BUG:无法在0000000000000028处理内核空指针解除引用”,

  2. 另一次我看到这是因为init不是“大多数用途的子进程的父”(实际的手册页引用)。当您使用ptrace系统调用(strace程序在内部使用)附加到进程时,可能会发生这种情况。例如,我遇到了将strace附加到子进程B的情况。最后,进程B终止,就像它的父进程一样(不确定是什么顺序)。然后,进程B看起来像init拥有的僵尸。然而,它的“最多目的”父母实际上是strace计划。在杀死strace之后,进程B被收获