init никогда не пожинает зомби / несуществующие процессы - PullRequest
6 голосов
/ 15 декабря 2009

На моем веб-сервере Fedora Core 9 с ядром 2.6.18 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 Ответ

2 голосов
/ 23 февраля 2012

Это ударило меня по Ubuntu двумя способами:

  1. Что-то не так с ядром. В моем случае произошел сбой драйвера ядра, и внутренняя часть процесса потерпела крах. Лучший способ проверить это - проверить / var / log / syslog (и dmesg), чтобы увидеть, не выглядит ли что-нибудь неправильно - например, «BUG: невозможно обработать разыменование указателя NULL в ядре в 0000000000000028»,

  2. В другой раз, когда я видел это, init не является «родителем дочернего процесса для большинства целей» (фактическая цитата man-страницы). Это может произойти, когда вы используете системный вызов ptrace (который внутренне использует программа strace) для присоединения к процессу. Например, я попал в ситуацию, когда я присоединяю strace к дочернему процессу B. В конце концов, процесс B завершается, как и его родитель (не знаю, в каком порядке). Процесс B выглядит как зомби, принадлежащий init. Тем не менее, его родитель "большинства целей" на самом деле был программой strace. После уничтожения стриса процесс B был пожинен

...