Вы когда-нибудь сталкивались с ситуацией, когда вы запускали приложение, и внезапно, когда вы его использовали, оно перестает отвечать и неожиданно дает сбой? Вы пытаетесь запустить приложение еще раз, но ничего не происходит, потому что исходный процесс приложения никогда не завершается полностью.
Что ж, в какой-то момент это случилось со всеми нами, не так ли? Решение состоит в том, чтобы прервать или убить процесс приложения. Но как?
К счастью, в Linux есть несколько утилит, которые позволяют убивать ошибочные процессы.
В этой статье мы покажем вам, как использовать команды kill
, killall
и pkill
для завершения процесса в Linux.
Основное различие между этими инструментами заключается в том, что kill
завершает процессы на основе идентификатора процесса (PID), а команды killall
и pkill
завершают запущенные процессы на основе их имен и других атрибутов.
Обычные пользователи могут убивать свои собственные процессы, но не те, которые принадлежат другим пользователям, в то время как пользователь root может убивать все процессы.
Сигналы отключения системы
kill
, killall
и pkill
отправляют заданный сигнал указанным процессам или группам процессов. Если сигнал не указан, каждый инструмент отправляет 15
( TERM
).
Наиболее часто используемые сигналы:
1
(-HUP): перезагрузить процесс.9
(-KILL): убить процесс.15
(-TERM): чтобы корректно остановить процесс.
Сигналы можно указать тремя разными способами:
- используя число (например, -1)
- с префиксом «SIG» (например, -SIGHUP)
- без префикса «SIG» (например, -HUP).
Используйте параметр -l
чтобы -l
список всех доступных сигналов:
kill -l # or killall -l
Описанные ниже шаги будут работать во всех дистрибутивах Linux.
Завершение процессов с помощью команды kill
Чтобы сначала завершить процесс с помощью команды kill
, вам нужно найти PID процесса. Вы можете сделать это с помощью различных команд, таких как top
, ps
, pidof
и pgrep
.
Допустим, браузер 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
(без аргументов) на вашем терминале.
Например, чтобы завершить все процессы, запущенные от имени пользователя sara, вы должны выполнить следующую команду:
sudo killall -u sara
Завершение процессов с помощью команды pkill
pkill
завершает процессы, соответствующие шаблону, указанному в командной строке:
pkill -9 firefox
Название процесса не обязательно должно быть точным.
С помощью pkill
вы также можете отправить сигнал процессам, принадлежащим данному пользователю. Чтобы убить только процессы firefox, принадлежащие пользователю sara, вы должны ввести:
pkill -9 -u sara firefox
Выводы
Завершение неотвечающих программ с помощью команд kill
, killall
и pkill
— простая задача. Вам нужно только знать имя процесса или PID.
Добавить комментарий