Состояние zombie
wait
). Это делается для того, чтобы родительский процесс мог получить данные о том, как завершился процесс. т. е. процессы в состоянии zombie
уже не потребляют никаких ресурсов ни процессора, ни памяти. По этой же причине их нельзя принудительно завершить – они уже завершены.Родительский процесс (PPID
PID
1 (обычно это специальный процесс init
в системе, мы про него поговорим ниже), который выполняет wait
для всех таких процессов.Посмотреть список процессов и их состояние можно с помощью команды ps
К большинству комбинаций можно добавить w
, тогда поле имени процесса (обычно программа с аргументами) будет шире. Если добавить дважды, то будет ещё шире, а если трижды, то ограничений на ширину не будет совсем.Бывает удобно отслеживать активность процессов в реальном времени. Тут помогут команды top
htop
. Они показывают процессы в виде таблицы, отсортированной по одному полю, и обновляют её раз в 5 секунд (можно поменять интервал). При этом показываются только те процессы, которые поместились на экране, плюс некоторые общие данные о системе – загрузка процессора, памяти, loadaverage, число процессов в разных состояниях.Можно переключать режимы отображения и сортировки. Для top
1
k
r
u
q
У htop
Мы уже не раз упомянули сигналы – это простой способ общения процессов, любой процесс может послать другому сигнал, если он принадлежит тому же пользователю (пользователь root
Для большинства сигналов есть стандартные значения и действия, ниже – самые часто используемые:
Действия «по умолчанию» процесс может изменять (кроме сигнала KILL). Их можно обработать или игнорировать. При корректном завершении память процесса может быть записана в т. н. core-файл для того, чтобы после можно было исследовать причину ошибки отладчиком. Будет ли создан core-файл, определяется настройками ОС и лимитами (см. главу о квотах).
Послать сигнал из командной строки можно командой kill
kill -9 1234
принудительно завершит процесс 1234, а kill -STOP 2345
остановит процесс 2345. Как видно, можно использовать как номер сигнала, так и его обозначение. kill -l
покажет список всех сигналов. Иногда требуется послать сигнал не одному процессу, а многим, например всем процессам пользователя. Тогда на помощь приходит программа pkill
: pkill -u vasya -TERM
пошлёт сигнал TERM
всем процессам пользователя vasya
.Выше мы говорили о том, что процессы, желающие выполняться, ставятся в очередь. В ней они выполняются не всегда подряд, у каждого есть приоритет и влияющий на него параметр nice
Здесь мы меняем вежливость с 0 до 15 (приоритет понижается) или до -10 (приоритет повышается).