Состояние >zombie
возникает, когда процесс завершился, но его родитель «не подтвердил» это (не вызвал системный вызов >wait
). Это делается для того, чтобы родительский процесс мог получить данные о том, как завершился процесс. т. е. процессы в состоянии >zombie
уже не потребляют никаких ресурсов ни процессора, ни памяти. По этой же причине их нельзя принудительно завершить – они уже завершены.
Родительский процесс (>PPID
) есть у каждого процесса в системе, если родительский процесс завершился, то им становится процесс с >PID
1 (обычно это специальный процесс >init
в системе, мы про него поговорим ниже), который выполняет >wait
для всех таких процессов.
Посмотреть список процессов и их состояние можно с помощью команды >ps
. У неё нелёгкая судьба, т. к. в разных вариантах популярных ОС (Unix, BSD, Solaris) исторически у неё было много разных, в том числе конфликтующих опций. В результате в Linux используется вариант GNU, который пытается их сочетать. В частности, есть опции, которые обязательно надо указывать с минусом впереди, а другие – наоборот только без минуса. Ниже самые полезные с нашей точки зрения:
К большинству комбинаций можно добавить w, тогда поле имени процесса (обычно программа с аргументами) будет шире. Если добавить дважды, то будет ещё шире, а если трижды, то ограничений на ширину не будет совсем.
Бывает удобно отслеживать активность процессов в реальном времени. Тут помогут команды >top
и более новомодная >htop
. Они показывают процессы в виде таблицы, отсортированной по одному полю, и обновляют её раз в 5 секунд (можно поменять интервал). При этом показываются только те процессы, которые поместились на экране, плюс некоторые общие данные о системе – загрузка процессора, памяти, loadaverage, число процессов в разных состояниях.
Можно переключать режимы отображения и сортировки. Для >top
есть несколько горячих клавиш, их список можно получить, нажав 'h'. Наиболее удобные варианты сортировки и команды:
>+
– сортировать процессы по использованию процессора;
>+
– сортировать процессы по использованию памяти;
>1
– показывать загрузку каждого ядра или суммарную;
>k
– послать сигнал процессу;
>r
– изменить приоритет процесса;
>u
– фильтровать по пользователю;
>q
– выход.
У >htop
более дружественный интерфейс, по возможности она использует цветной вывод, загрузку процессора и памяти выводит в виде текстовых прогресс-баров, умеет организовывать процессы в деревья (и схлопывать их с одну строку, что иногда очень удобно). Клавиши управления выведены в нижней строке в стиле Norton Commander (Midnight Commander/FAR manager).