Ниже приведён переработанный и уникальный вариант статьи, основанный на исходном черновике. Текст не сокращён, все важные команды сохранены, при этом убраны ненужные детали.
В Linux под «убить процесс» (kill process) подразумевается остановка или завершение выполнения запущенной программы. Каждому процессу в системе присваивается уникальный идентификатор (Process ID, PID), который помогает операционной системе отслеживать все активные процессы.
В данной статье мы подробно рассмотрим, как найти и завершить процесс в Linux, используя разные команды, а также разберём основные сигналы, с помощью которых можно влиять на поведение процессов.
Что такое процесс в Linux
Процесс в Linux — это выполняющаяся в текущий момент программа, у которой есть собственный PID. Иногда такие процессы начинают вести себя некорректно: не откликаются на пользовательские действия, потребляют слишком много ресурсов или «зависают». В таких случаях требуется завершить (убить) проблемный процесс, и здесь на помощь приходит команда kill.
Что такое команда kill
Команда kill — это базовый инструмент для отправки сигналов процессам в Linux. Сигналы могут «попросить» процесс завершиться корректно или же принудительно остановить его выполнение.
Команда kill пригодится в различных ситуациях:
- Когда требуется прервать автоматизированный процесс или сценарий.
- Если приложение было запущено по ошибке.
- При чрезмерном потреблении памяти конкретным процессом.
- Для принудительного завершения зависшего приложения.
- Чтобы остановить любой процесс, работающий в фоновом режиме.
Кроме того, в Linux существует расширенная версия, позволяющая убивать процессы по имени — это pkill, а также дополнительная команда killall, которую мы рассмотрим далее.
Как найти PID или имя процесса
Перед тем как завершить процесс, необходимо выяснить его PID (Process ID) либо точное название. Это можно сделать с помощью команды:
ps -ef
Она выводит список всех активных процессов с указанием PID и других подробностей.
Если нужно отфильтровать список по конкретному имени (например, «mariadb»), используйте:
ps -ef | grep mariadb
Также можно сразу получить PID по имени процесса с помощью:
pgrep mariadb
Как убить (завершить) процесс в Linux
Чтобы прервать процесс, сначала обратите внимание на права. Если вы работаете от имени root, вы можете завершать любые процессы. В ином случае может понадобиться команда sudo перед kill или переключение на root-пользователя через su.
Синтаксис команды kill
kill [сигнал или опция] PID
или
sudo kill [сигнал или опция] PID
Наиболее распространённые сигналы, которые используются с kill:
- SIGTERM (15) — стандартное и наиболее «безопасное» завершение, даёт процессу шанс корректно закрыться.
- SIGHUP (1) — может перезапустить процесс или вызвать завершение, в зависимости от настроек.
- SIGKILL (9) — «жёсткое» завершение, процессу не даётся время на сохранение или корректное остановление.
Полный список сигналов с соответствующими номерами можно посмотреть так:
kill -l
Однако на практике самыми востребованными обычно являются SIGKILL (9) и SIGTERM (15).
Пример использования kill
Чтобы завершить процесс с определённым PID (к примеру, 3383), выполните:
kill -9 3383
Здесь:
- -9 означает SIGKILL, то есть принудительное завершение.
Ту же операцию можно выполнить, указав имя сигнала:
kill -SIGTERM 3383
Аналогично kill -9 3383 эквивалентно kill -SIGKILL 3383.
Проверить, что процесс действительно остановлен, можно повторно выполнив:
ps -ef | grep mariadb
Как убить несколько процессов одновременно
Если нужно завершить сразу несколько процессов по их PID, достаточно перечислить все нужные идентификаторы в одной строке:
Сначала определяем PID процессов (например, проверяем процессы apache2):
ps aux | grep apache2
или
pgrep apache2
Затем завершаем их одной командой:
kill -9 PID1 PID2 PID3
Завершение процесса по названию при помощи pkill
Чтобы убить процесс, используя только его имя (или шаблон), применяют pkill. Например, для остановки сервера MySQL (если точное имя процесса — mysqld):
pkill mysqld
Перед использованием команды важно убедиться, что вы указываете правильное имя процесса. Ошибочно введённая команда может завершить не ту программу.
Утилита killall
В отличие от kill, которая работает с PID, команда killall умеет завершать процессы, исходя из их имени (аналогично pkill). При этом она может остановить сразу все процессы с заданным именем, включая дочерние.
Например, чтобы убить все процессы mysqld вместе с их дочерними процессами:
killall mysqld
или
pkill mysqld
После выполнения можно проверить, запущен ли ещё процесс, любой из следующих команд:
systemctl status mysql
pgrep mysql
ps -aux | grep mysql
Также существуют графические инструменты (например, htop или gnome-system-monitor), позволяющие просматривать процессы и завершать их с помощью удобного интерфейса.
Заключение
Завершение процессов — это базовая, но крайне важная задача в администрировании Linux. Способ закрытия процесса (мягкий или жёсткий) и выбор инструмента (kill, pkill, killall) во многом зависят от вашей роли в системе (обычный пользователь или root) и от того, насколько корректно нужно завершить работу программы.
Зная, как определить PID или имя процесса и правильно применять сигналы, вы легко сможете управлять работой приложений в вашей системе.