opened image

Как завершить запущенный процесс из терминала Linux

 

 

Ниже приведён переработанный и уникальный вариант статьи, основанный на исходном черновике. Текст не сокращён, все важные команды сохранены, при этом убраны ненужные детали.


В 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 или имя процесса и правильно применять сигналы, вы легко сможете управлять работой приложений в вашей системе.