Зомби процессы в Linux

Если в вашей системе завелись зомби процессы, не расстраивайтесь. Не смотря на страшное название зомби процесс не может нанести серьезный вред вашей системе. Для начала давайте разберемся как обычный процесс превращается в зомби.


Когда дочерний процесс получает команду на завершение, он освобождает все используемые ресурсы и продолжает как зомби существовать в системе с ранее присвоенным ему PID. Далее с помощью сигнала SIGCHLD система уведомляет родительский процесс о завершении зомби процесса. Если по какой-либо причине родительский процесс игнорирует этот сигнал, то зомби процесс так и продолжает отображаться в системе.


Как вы уже поняли, зомби процессы не используют системные ресурсы, поэтому их можно просто игнорировать. Убить зомби процесс на прямую командой kill у вас не получиться. В данном случае единственный вариант полностью убрать зомби процесс — убить или перезапустить его родительский процесс.


Что бы убить зомби процесс, для начала нужно получить его PID:


# ps aux | grep -w Z
root 2037 0.0 0.0 0 0 ? Z 09:44 0:00 [httpd]
root 8470 0.0 0.0 112652 984 pts/10 S+ 10:43 0:00 grep --color=auto -w Z

В моем примере PID зомби процесса 2037. Теперь получим PID родительского процесса:


# ps o ppid 2037
PPID
2033

Когда мы знаем PID, правильнее всего определить что это за процесс командой top, а затем перезапустить его.


В крайнем случае можно убить родительский процесс:


# kill -9 2033

Добавить комментарий

Автору будет очень приятно получить обратную связь.

Комментариев 0