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

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


Каждая программа, которая выполняется в Linux, - это системный процесс, у которого есть свой идентификатор. Каждый процесс может запускать дочерние процессы с помощью функции fork. Такие процессы остаются под контролем родительского процесса и не могут быть завершены без его ведома. Если один из дочерних процессов всё же завершился, а его родительский процесс не смог получить об этом информацию, то такой дочерний процесс становится зомби.


Зомби процессы Linux не выполняются и убить их нельзя, даже с помощью sigkill, они продолжают висеть в памяти, пока не будет завершён их родительский процесс.


Посмотреть такие процессы можно с помощью утилиты ps, здесь они отмечаются как defunct:



ps aux | grep defunct



Если вы попытаетесь убить такой процесс с помощью сигнала KILL, то ничего не выйдет:




Чтобы его завершить, нужно найти "родителя" этого процесса. Для этого используйте команду:



ps -xal | grep defunct



Здесь идентификатор родительского процесса находится в четвёртой колонке (PPID). Теперь мы можем послать ему сигнал завершения, и такого процесса в системе больше не будет:



kill -KILL 3990

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

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

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