Главная >> Инструкции >> Зомби процессы Linux

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

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

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

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

ps aux | grep defunct

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

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

ps -xal | grep defunct

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

kill -KILL 3990

Для большего удобства вы можете использовать утилиты top или htop, но принцип их действия будет аналогичным, поэтому я не буду здесь его рассматривать. Теперь вы знаете, что делать, если в вашей системе появились зомби процессы Linux.

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

10 комментариев к “Зомби процессы Linux”

  1. Статья ни о чем. Где к примеру информация о том, как бороться с зомби, если к примеру багнутый сервис в продакшене, который плодит зомби на столько что кончаются PID'ы, надо как минимум до утра каким-то образом удержать на плаву, но прибивать сервис нельзя? Нет информации о том, что зомби это часть жизненного цикла любого процесса.

    Ответить
  2. Скажите почему после обновления программ и системы после перезагрузки висит все если даже и зашел после смены дров на другие не тест система дохнет???Не грузится заходишь рекавери через загрузку все падает .Ебался 1 неделю с xubuntu видимо кривая сборка скачал другую не сменить окружение не рабочий стол тупо виснет ПОЧЕМУ???? ASUSN56JRH SSD 256 gb Озу16 gb ставил рядом с 10 кой

    Ответить
  3. Ставил xubuntu, lubuntu, ubuntu их разрядности с разным окружением ВЕЗДЕ ПРЕТ ТИРИНГ НЕ УБИВАЕТСЯ НИЧЕМ....про смену дров молчу делал конечно только ubuntu 18.04 без него НО сожрала 10 озу за 2 дня Еще ubuntu studio без тиринга ТОЛЬКО НЕ СТАВИТСЯ РУГАЕТСЯ НА ДИСК где скачать не конченный дистр остальное ВСЕ ПОЛНОЕ ГАВНО ЛИБО ВИСНЕТ ЛИБО ДОХНЕТ осталось минт прощупать

    Ответить
  4. Что значит: "Если один из дочерних процессов всё же завершился, а его родительский процесс не смог получить об этом информацию, то такой дочерний процесс становится зомби." Следуя логике этого сообщения, то дочерний процесс уже завершился, а если он завершился, то как он будет зомби, если его уже нет ?

    Ответить

Оставьте комментарий