Как использовать команду Kill в Linux

12 set 2022 3 min di lettura
Как использовать команду Kill в Linux
Indice dei contenuti

Введение

Некоторые приложения могут начать работать нестабильно и перестать отвечать на запросы или начать потреблять много системных ресурсов. Не отвечающие приложения не могут быть перезапущены, потому что исходный процесс приложения никогда не останавливается полностью. Единственное решение — перезагрузить систему или завершить процесс приложения.

Существует несколько утилит, позволяющих убивать неправильные процессы, наиболее часто используемая команда 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) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
 63) SIGRTMAX-1 64) SIGRTMAX

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

  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

PID, данные команде kill, могут быть одним из следующих:

  • Если PID больше нуля, сигнал отправляется процессу с идентификатором, равным PID.
  • Если PID равен нулю, сигнал отправляется всем процессам в текущей группе процессов. Другими словами, сигнал отправляется всем процессам, принадлежащим GID оболочки, вызвавшим команду kill. Используйте команду ps -efj для просмотра идентификаторов групп процессов (GID).
  • Если PID равен -1, сигнал отправляется всем процессам с тем же UID, что и у пользователя, вызывающего команду. Если пользователь, которого он вызывает, является root, сигнал отправляется всем процессам, кроме init и самого процесса kill.
  • Если PID меньше -1, сигнал отправляется всем процессам в группе процессов и с GID, равным абсолютному значению PID.

Обычные пользователи могут отправлять сигналы своим собственным процессам, но не процессам, принадлежащим другим пользователям, в то время как пользователь root может отправлять сигналы процессам других пользователей.

Убить процессы с помощью команды Kill

Чтобы убить или убить процесс с помощью команды kill, вы должны сначала найти идентификационный номер процесса (PID). Вы можете сделать это с помощью различных команд, таких как top, ps, pidof и pgrep.

Допустим, браузер Firefox не ответил, и вам нужно остановить процесс Firefox. Чтобы найти PID браузера, используйте команду pidof:

pidof firefox

Команда напечатает идентификаторы всех процессов Firefox:

6263 6199 6142 6076

Как только вы узнаете номера процессов, вы можете убить их всех, отправив сигнал TERM:

kill -9 2551 2514 1963 1856 1771

Вместо того, чтобы искать 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, который завершает указанные процессы.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.