Команды kill и killall в Linux: как завершить ненужные процессы
Статья
Время чтения
5 минут
Когда Linux перегружена или процессы системы начинают зависать, их завершение — единственный способ решить проблему. Для этого операционная система предлагает администраторам специальные инструменты — команды kill и killall. В статье разберем несколько способов, как с их помощью закрывать любые процессы, в том числе используя права суперпользователя.
Подготовка к завершению процессов
Прежде чем «убить» какой-либо процесс в ОС Linux, нужно узнать его идентификатор — PID. В Linux существует несколько способов его найти, включая команды ps, top и pidof. Рассмотрим их.
Команда ps
Команда ps возвращает статический снимок текущих процессов. Она полезна в тех случаях, если вы хотите получить всю информацию — в том числе PID — по всем процессам в системе. Для этого введите в терминал:
ps aux
В результате операционная система отобразит все процессы с подробной информацией по каждому, включая искомый идентификатор PID.
А еще с помощью команды ps можно вывести информацию о конкретном процессе, использовав его имя:
ps aux | grep <название_процесса>
Команда top
Чтобы отслеживать процессы в реальном времени, а не в статике, как при работе с командой ps, вы можете использовать команду top. Иными словами, для динамического мониторинга введите в терминал:
top
Так вы сможете увидеть таблицу, где процессы системы сортируются по убыванию нагрузки на центральный процессор. Чтобы обнаружить в этом списке конкретный процесс и определить его PID, нажмите / и введите его имя.
Команда pidof
Команда pidof позволяет идентифицировать PID нежелательного процесса в случае, если вы знаете о том, каким исполняемым файлом он был запущен. Для этого введите в терминал команду:
pidof <название_процесса>
В случае если процесс в данный момент активен, ОС отобразит вам его PID.
Как завершить процесс с помощью команды kill
Как только вы узнали уникальный идентификатор процесса (PID), можете сразу воспользоваться командой kill. В операционной системе Linux эта команда является стандартным инструментом для управления процессами.
В большинстве случаев синтаксис команды будет выглядеть так: kill [опция] PID. То есть сразу после kill следует:
указать номер сигнала — это числовое значение, которое определяет, какой именно сигнал будет отправлен процессу для управления его выполнением;
ввести уникальный идентификатор процесса (PID), который вы получили ранее.
В некоторых случаях завершить нежелательный процесс можно без указания дополнительных сигналов. Тогда для завершения процесса достаточно ввести команду:
kill PID
Однако, если завершить задачу с помощью kill PID не удалось, нужно использовать специальные сигналы:
SIGTERM (15). Сигнал, который используется по умолчанию и сообщает процессу о завершении. Большинство программ при получении SIGTERM без каких-либо заминок освобождают ресурсы, завершают операции и корректно закрываются с сохранением данных.
SIGKILL (9). Отправляет процессу команду на принудительное завершение. Используется, если задача игнорирует сигнал SIGTERM и продолжает выполняться.
Еще для завершения процессов в Linux могут использоваться такие сигналы, как SIGSTOP (19) и SIGCONT (18). Первый приостанавливает процесс без его завершения (делает паузу), а второй — возобновляет выполнение задачи после приостановки. Как и в случае со всеми другими сигналами, они прописываются в команде после дефиса. Например:
kill -19 PID
Как завершить процессы с помощью команды killall
Команда killall нужна для завершения всех процессов с заданным именем или группы процессов с частично совпадающими именами.
Синтаксис killall похож на синтаксис команды kill, однако для ее использования необязательно знать PID. Вместо этого нужно ввести наименование процесса, например:
killall [опции] <название_процесса>
Как и в случае с kill, команда для прекращения нескольких процессов поддерживает сигналы для передачи дополнительных указаний задачам. Например, чтобы принудительно закрыть несколько окон браузера Firefox, нужно ввести команду:
killall -9 firefox
Таким же образом можно вводить сигналы для приостановки процесса и продолжения его выполнения после паузы.
Дополнительные инструменты для завершения процессов
Помимо рассмотренных выше команд kill и «killall, в операционной системе Linux есть и другие, которые могут быть пригодиться для завершения процессов.
Например, команда pkill может завершить все процессы, которые отвечают какому-либо указанному шаблону. Допустим, администратору нужно одновременно прекратить все задачи, так или иначе, связанные с использованием SSH. Для этого следует ввести в терминал команду следующего вида:
pkill ssh
А еще, если по каким-то причинам стандартные средства работы с операционной системой Linux вам не подходят или не нравятся, можно использовать визуальное средство завершения процессов. Для этого в ОС предусмотрена утилита htop. Чтобы активировать ее, введите в терминал команду htop, которая откроет визуальный интерфейс для управления процессами:
htop
Чтобы переключаться между задачами в интерфейсе, используйте стрелки на клавиатуре, а чтобы закрыть его — кнопку F9.
Проверка завершения процесса
После завершения процесса с помощью любой из перечисленных выше команд важно убедиться в том, что он действительно остановлен. Для этого администраторам операционной системы Linux предлагается использовать команду ps, особенности работы которой мы уже рассмотрели ранее.
Введите команду формата:
ps aux | grep <название_процесса>
Так вы увидите список процессов, который активен в системе. Если в нем нет принудительно завершенной задачи, значит, она действительно больше не работает. Аналогично можно использовать команды top или htop.
Важно также отметить, что иногда процесс не удается завершить из-за отсутствия у пользователя прав администратора. Чтобы проверить их наличие, нужно добавить sudo перед командой для завершения процесса:
sudo kill PID
Права и доступы при завершении процессов
Каждый процесс в Linux принадлежит пользователю с определенными правами и доступами — такое разделение полезно, если работу в одной системе нужно разграничить между разными юзерами.
Закрытие любых процессов — это задача, которую можно выполнить только в статусе суперпользователя (root). Если же попытаться закрыть чужой процесс без использования прав суперпользователя, терминал вернет ошибку вида Operation not permitted.
Коротко о командах kill и killall в Linux
В сообществе программистов Linux славится своей простотой и логичностью. И прямое подтверждение этому мнению — команды kill и killall. Они позволяют быстро и эффективно закрывать зависшие приложения, освобождая ресурсы для еще более удобной работы в системе. А для более прицельного управления используются в связке с такими утилитами, как ps, htop и pidof.
Если вы тоже являетесь поклонником Linux или просто привыкли в ней работать, в облаке Cloud.ru для вас всегда доступны готовые образы загрузочных дисков операционных систем Ubuntu и Debian разных версий. С их помощью удастся легко развернуть виртуальную машину, чтобы ускорить создание сервера или тестовой среды.