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