Команда kill в Linux

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. Использование числа (например, -1 или -s 1 ).
  2. Использование префикса «SIG» (например, -SIGHUP или -s SIGHUP ).
  3. Без префикса «SIG» (например, -HUP или -s HUP ).

Следующие команды эквивалентны друг другу:

kill -1 PID_NUMBERkill -SIGHUP PID_NUMBERkill -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 , который завершает данные процессы.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

One Response
  1. 25.10.2023

Оставьте комментарий