Мир Линукса
Что значит состояние процесса Z в Linux
Иногда в ps, top или htop можно увидеть процесс со статусом Z. Это не «зависший» и не «работающий» процесс - это зомби.
Что такое процесс-зомби
Процесс в состоянии Z (zombie) - это процесс, который уже завершился, но его родитель ещё не забрал код завершения через wait().
Проще говоря:
🟢сам процесс мертв;
🟢запись о нём осталась в таблице процессов;
🟢ресурсы (CPU, память) он не потребляет.
Почему появляются зомби
Каждый процесс в Linux обязан:
🔴 завершиться;
🔴 сообщить родителю статус выхода;
🔴 быть «убранным» родителем.
Если родитель:
🟢не вызывает wait();
🟢завис;
🟢написан с ошибкой,
то дочерний процесс превращается в зомби.
Почему зомби нельзя убить
kill не работает, потому что:
✅процесса фактически уже нет;
✅сигналу некуда доставляться.
Поэтому:
🤔 kill -9 не помогает;
🤔 перезапускать нужно родителя, а не зомби.
Опасны ли зомби
Один-два - нет.
Тысячи - да.
Хотя зомби не жрут ресурсы, они:
- занимают PID’ы;
- могут забить таблицу процессов;
- указывают на баги в приложении.
Как избавиться от зомби
Правильные способы:
🟢перезапустить родительский процесс;
🟢починить код, чтобы вызывался wait();
🟢в крайнем случае - перезапуск сервиса или системы.
Неправильный способ - бесконечно пытаться убить Z через kill.
Состояние Z - это не проблема ядра и не баг Linux. Это сигнал, что где-то есть криво написанный родительский процесс. Если видишь зомби - ищи того, кто его «породил».
4 · 536 ·