init никогда не пожинает зомби/несуществующие процессы

StackOverflow https://stackoverflow.com/questions/1907775

Вопрос

На моем веб-сервере 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>

Это ошибка ОС?неправильная конфигурация?Я ищу вдохновение относительно источника этой проблемы.Спасибо

Это было полезно?

Решение

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

  1. Что-то не так с ядром.В моем случае произошел сбой драйвера ядра, и внутренние компоненты процесса сошли с ума.Лучший способ проверить это — проверить /var/log/syslog (и dmesg), чтобы увидеть, не выглядит ли что-то не так – например, «ОШИБКА:невозможно обработать разыменование нулевого указателя ядра по адресу 0000000000000028",

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top