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