
Linux — отличная и продвинутая операционная система, но она не идеальна. Время от времени некоторые приложения могут работать нестабильно, переставать отвечать на запросы или потреблять много системных ресурсов. Перезапуск неотвечающих приложений невозможен, поскольку исходный процесс приложения никогда не завершается полностью. Единственный выход — перезапустить систему или завершить процесс приложения.
Существует несколько утилит, позволяющих завершать ошибочные процессы с помощью kill наиболее часто используемой из которых является команда kill.
Команда kill
kill — встроенная функция большинства оболочек на основе Bourne, таких как Bash и Zsh. Поведение команды в этих оболочках и в автономном исполняемом файле /bin/kill несколько различается.
Используйте команду type для отображения всех расположений в вашей системе, содержащих kill :
type -a kill
kill is a shell builtin kill is /bin/kill
Вывод выше показывает, что встроенная команда оболочки имеет приоритет над автономным исполняемым файлом и используется при каждом вводе команды kill . Если вы хотите использовать исполняемый файл, введите полный путь к файлу /bin/kill . В этой статье мы будем использовать встроенную команду Bash.
Синтаксис команды kill имеет следующий вид:
kill [ OPTIONS ] [ PID ] ...
Команда kill отправляет сигнал указанным процессам или группам процессов, заставляя их действовать в соответствии с этим сигналом. Если сигнал не указан, по умолчанию используется значение -15 (-TERM).
Наиболее часто используемые сигналы:
-
1(HUP) — Перезагрузить процесс. -
9(KILL) — завершить процесс. -
15(TERM) — плавная остановка процесса.
Чтобы получить список всех доступных сигналов, вызовите команду с опцией -l :
kill -l

Сигналы можно задать тремя различными способами:
- Использование числа (например,
-1или-s 1). - Использование префикса «SIG» (например,
-SIGHUPили-s SIGHUP). - Без префикса «SIG» (например,
-HUPили-s HUP).
Следующие команды эквивалентны друг другу:
kill -1 PID_NUMBERkill -SIGHUP PID_NUMBERkill -HUP PID_NUMBER
Идентификаторы процессов, предоставленные команде kill могут быть одними из следующих:
- Если
PIDбольше нуля, сигнал отправляется процессу с ID, равнымPID. - Если
PIDравен нулю, сигнал отправляется всем процессам в текущей группе. Другими словами, сигнал отправляется всем процессам, принадлежащим GID оболочки, вызвавшей командуkill. Для просмотра идентификаторов групп процессов (GID) используйте командуps -efj. - Если
PIDравен-1, сигнал отправляется всем процессам с тем же UID, что и у пользователя, вызвавшего команду. Если вызывающий пользователь — root, сигнал отправляется всем процессам, кроме init и самого процессаkill. - Если
PIDменьше-1, сигнал отправляется всем процессам в группе процессов eq с GID, равным абсолютному значениюPID.
Обычные пользователи могут отправлять сигналы своим собственным процессам, но не тем, которые принадлежат другим пользователям, в то время как пользователь root может отправлять сигналы процессам других пользователей.
Завершение процессов с помощью команды kill
Чтобы завершить или уничтожить процесс с помощью команды kill , сначала необходимо узнать его идентификатор (PID). Это можно сделать с помощью различных команд, таких как top , ps , pidof и pgrep .
Предположим, браузер Firefox перестал отвечать, и вам нужно завершить его процесс. Чтобы узнать PID браузера, используйте команду pidof :
pidof firefox
Команда выведет идентификаторы всех процессов Firefox:
6263 6199 6142 6076
Узнав номера процессов, вы можете завершить их все, отправив сигнал TERM :
kill -9 6263 6199 6142 6076
Вместо поиска PID и последующего завершения процессов вы можете объединить указанные выше команды в одну:
kill -9 $(pidof firefox)
Перезагрузка процессов с помощью команды kill
Другим распространенным вариантом использования kill является отправка сигнала HUP , который сообщает процессам о необходимости перезагрузить свои настройки.
Например, чтобы перезагрузить Nginx , необходимо отправить сигнал главному процессу. Идентификатор главного процесса Nginx можно найти в файле nginx.pid , который обычно находится в каталоге /var/run .
Используйте команду cat , чтобы найти главный PID:
cat /var/run/nginx.pid
30251
Как только вы нашли главный PID, перезагрузите настройки Nginx, введя:
sudo kill -1 30251
Приведенную выше команду необходимо запустить от имени пользователя root или пользователя с привилегиями sudo .
Заключение
Команда kill используется для отправки сигнала процессам. Наиболее часто используемый сигнал — SIGKILL или -9 , который завершает указанные процессы.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства