Получить доступ

Какие состояния бывают у процесса в Linux и что такое зомби и сироты?

MiddleLinux и диагностика
Ещё спрашивают так:
  • Что значит состояние D в ps?
  • Как убить процесс-зомби?
Коротко

В ps видно состояние: R — выполняется или ждёт CPU, S — спит в ожидании события (норма для большинства), D — непрерываемый сон в ожидании ввода-вывода (не реагирует даже на SIGKILL), T — остановлен, Z — зомби: процесс завершился, но родитель не забрал код выхода через wait. Зомби не занимает память, только запись в таблице процессов; убить его нельзя — нужно исправить или перезапустить родителя.

  • Сирота — родитель умер раньше, процесс усыновляет PID 1 (или subreaper)
  • Много процессов в D — проблема с диском или сетевой ФС (NFS); они поднимают load average
  • Тысячи зомби исчерпывают лимит PID — новые процессы не создаются

А ещё В контейнере без init зомби некому собирать — отсюда tini

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Как смотреть:

ps -eo pid,ppid,stat,cmd --forest   # дерево с состояниями
ps -eo stat,ppid | awk '$1 ~ /^Z/'  # зомби и их родители
cat /proc/PID/status                # State, родитель, потоки

Зомби. После завершения ядро хранит код выхода, пока родитель не вызовет wait. Если родитель забыл (ошибка в коде, запускает дочерние процессы и не ждёт их), зомби копятся. Лечение — исправить родителя или завершить его: тогда зомби перейдут к PID 1, который их соберёт.

D-состояние. Процесс ждёт ответа устройства внутри ядра и не может быть прерван. Зависшее NFS-хранилище или умирающий диск дают «неубиваемые» процессы и высокий load average при пустом CPU.

Сироты и PID 1. Обычный init собирает усыновлённых сирот. В контейнере PID 1 — само приложение, которое этого не умеет, поэтому используют tini или --init.

Что хотят услышать

  • Основные состояния процесса.
  • Природа зомби и почему их не убить.
  • Связь D-состояния с load average, роль PID 1.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем