Как убивать процессы с помощью Kill Killall и pkill в Linux

12 set 2022 2 min di lettura
Как убивать процессы с помощью Kill Killall и pkill в Linux
Indice dei contenuti

Может случиться так, что приложение вылетит, даже если вы попытаетесь перезапустить его, ничего не произойдет. Решение состоит в том, чтобы завершить или убить процесс.

К счастью, в Linux есть несколько утилит, позволяющих убивать плохие процессы.

В этой статье мы покажем вам, как использовать команды kill, killall и pkill для уничтожения процесса в Linux.

Основное различие между этими инструментами заключается в том, что kill завершает процессы на основе идентификатора процесса (PID), а команды killall и pkill завершают запущенные процессы на основе их имен и других атрибутов.

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

Сигналы системы команд Kill

kill, killall и pkill отправляют определенный сигнал определенным процессам или группам процессов. Если сигнал не указан, каждый инструмент отправляет 15 ( TERM ).

Наиболее часто используемые сигналы:

  • 1 (-HUP): перезагрузить процесс.
  • 9 (-KILL): убить процесс.
  • 15 (-TERM): изящная остановка процесса.

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

  • используя число (например, -1)
  • с префиксом "SIG" (например, -SIGHUP)
  • без префикса "SIG" (например, -HUP).

Используйте параметр -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

Или же:

killall -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
 CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

Описанные ниже шаги будут работать во всех дистрибутивах Linux.

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

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

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

pidof firefox

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

2551 2514 1963 1856 1771

Как только вы узнаете, что Firefox обрабатывает PID, чтобы завершить их, отправьте сигнал TERM:

kill -9 2551 2514 1963 1856 1771

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

Команда killall убивает все программы, соответствующие указанному имени.

Используя тот же сценарий, что и раньше, вы можете завершить процесс Firefox, набрав:

killall -9 firefox

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

Например, чтобы завершить все процессы, запущенные от имени пользователя alice, выполните следующую команду:

sudo killall -u alice

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

pkill завершает процессы, соответствующие шаблону, указанному в командной строке:

pkill -9 firefox

Имя процесса не обязательно должно совпадать.

С помощью pkill вы также можете отправить сигнал процессам, принадлежащим конкретному пользователю. Чтобы убить только процессы firefox, принадлежащие пользователю alice, введите:

pkill -9 -u alice firefox

Вывод

Завершение неотвечающих программ с помощью команд kill, killall и pkill — простая задача. Вам просто нужно знать имя процесса или PID.

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.