Linux — отличная и продвинутая операционная система, но она не идеальна. Время от времени некоторые приложения могут начать работать нестабильно, перестать отвечать на запросы или начать потреблять много системных ресурсов. Не отвечающие приложения не могут быть перезапущены, потому что исходный процесс приложения никогда не завершается полностью. Единственное решение — либо перезапустить систему, либо убить процесс приложения.
Есть несколько утилит, которые позволяют завершать ошибочные процессы, kill
наиболее часто используемые.
Содержание
Команда kill
kill
— это оболочка, встроенная в большинство оболочек, таких как 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_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER
PID, предоставленные команде kill
могут быть одним из следующих:
- Если
PID
больше нуля, сигнал отправляется процессу с идентификатором, равнымPID
. - Если
PID
равен нулю, сигнал отправляется всем процессам в текущей группе процессов. Другими словами, сигнал отправляется всем процессам, принадлежащим GID оболочки, вызвавшей командуkill
. Используйте командуps -efj
для просмотра идентификаторов групп процессов (GID). - Если
PID
равен-1
, сигнал отправляется всем процессам с тем же UID, что и пользователь, вызывающий команду. Если вызывающий пользователь является пользователем root, сигнал отправляется всем процессам, кроме init и самого процессаkill
. - Если
PID
меньше-1
, сигнал отправляется всем процессам в группе процессов eq с GID, равным абсолютному значениюPID
.
Обычные пользователи могут отправлять сигналы своим собственным процессам, но не тем, которые принадлежат другим пользователям, в то время как пользователь root может отправлять сигналы процессам других пользователей.
Завершение процессов с помощью команды kill
Чтобы завершить или убить процесс с помощью команды kill
, сначала вам нужно найти идентификационный номер процесса (PID). Вы можете сделать это с помощью различных команд, таких как top
, ps
, pidof
и pgrep
.
Допустим, браузер Firefox перестал отвечать, и вам нужно остановить процесс 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
, который завершает данные процессы.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
какие процессы нельзя завершить вызовом kill?