Может случиться так, что приложение вылетит, даже если вы попытаетесь перезапустить его, ничего не произойдет. Решение состоит в том, чтобы завершить или убить процесс.
К счастью, в 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.