Команда Kill в Linux

Команда «Убить»

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 
убить-процесс-в-Linux

Сигналы можно задать тремя различными способами:

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

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

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

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

убить терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *