ps
в настоящее время показывает 17617 зомби-процессов, каждый из которых имеет ppid 1 / init. init должен пожинать эти несуществующие процессы, но по какой-то причине это не так. Количество неработающих процессов растет.
Пытаясь заставить их пожинать, используя preap
не работает с:
preap: Failed to reap 15977: the only non-defunct ancestor is 'init'
Кстати, вот как я считал процессы:
% ps -e -o pid,s,ppid | awk 'index($2,"Z")>0 {ppid[$3]=ppid[$3]+1} END {for (key in ppid) print key,ppid[key]}'
1 17617
Я нашел эту тревожную запись в журнале:
Jun 20 22:45:34 host genunix: [ID 470503 kern.warning] WARNING: Sorry, no swap space to grow stack for pid 1 (init)
ОС - Solaris 10 (SunOS host 5.10 Generic_150401-04 i86pc i386 i86pc
).
Оказалось, что init просто перестал работать должным образом, вероятно, когда в системе были проблемы ввода-вывода со свопингом.
Как оказалось, если init завершится вне процесса выключения ОС, он просто перезапустится. Итак, я отправил init SIGSEGV (чтобы убедиться, что он не имитирует, но определяет, что завершение работы выполняется), он перезапустил init (все еще как pid 1), и новый init немедленно пожинал всех этих выдающихся зомби.
Однако мне, вероятно, следует перезагрузиться, чтобы устранить любые другие проблемы, которые могут возникнуть из-за проблем ввода-вывода подкачки.