Kill процесса в Linux или как убить процесс из командной строки?

В Linux убийство процесса означает завершение или остановку выполнения запущенной программы. Каждому запущенному процессу присваивается уникальный идентификационный номер, известный как Process ID (PID), который помогает системе отслеживать активные процессы.

Что такое процесс в Linux

Простыми словами, процесс – это программа, которая в данный момент запущена в системе, и каждый процесс имеет свой собственный специальный идентификационный номер (PID). Однако иногда запущенная программа, или процесс, может вести себя неправильно, перестать отвечать на запросы или использовать слишком много системных ресурсов.

Когда это происходит, нам нужно остановить или «убить» процесс, и вот тут-то и пригодится команда kill.

Что такое команда kill

Команда kill – это очень важная утилита, которая позволяет пользователям посылать сигналы (остановка или завершение) запущенным процессам, давая им команду на изящный выход или принудительное завершение.

Команда kill полезна, когда вам нужно управлять и контролировать деятельность различных программ в вашей системе Linux, например:

  • Для остановки любого автоматического процесса.
  • Остановить процесс, который был запущен случайно.
  • Остановить процесс, который использует слишком много памяти.
  • Принудительно завершить любой запущенный процесс в Linux.
  • Остановить процесс, работающий в фоновом режиме.

Использование команды kill из /usr/bin предоставляет вам некоторые дополнительные возможности, чтобы убить процесс по имени процесса, используя pkill, который идентифицирует процессы по их именам.

Как найти идентификатор процесса или его имя

Перед завершением запущенного процесса необходимо определить его идентификатор процесса (PID) или имя с помощью следующей команды ps, которая отображает информацию обо всех запущенных процессах в системе с указанием их PID (идентификатора процесса) и другой информации.

ps -ef

Если вы хотите найти конкретное имя процесса PID, вы можете использовать команду grep, которая выведет список всех процессов, запущенных в системе, и отфильтрует результаты, чтобы показать только те, которые содержат термин «mariadb».

ps -ef | grep mariadb

Иначе, вы можете напрямую найти PID процесса по имени с помощью команды pgrep, как показано на рисунке.

pgrep mariadb

Как убить процесс в Linux

Прежде чем убить, остановить или завершить процесс, подумайте о правах доступа. Если вы являетесь пользователем root, вы можете остановить любой процесс, но если вы обычный пользователь, вам нужно добавить sudo перед командой или переключиться на root с su, чтобы использовать команду завершения.

Общий синтаксис для команды kill следующий:

kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)

Для команды kill имя сигнала может быть таким:

Из приведенного выше поведения ясно, что:

  • SIGTERM – это стандартный и самый безопасный способ убить процесс.
  • SIGHUP – менее безопасный способ убить процесс, чем SIGTERM.
  • SIGKILL – самый небезопасный способ из трех вышеперечисленных, который завершает процесс без сохранения.

В Linux существуют различные сигналы, которые вы можете использовать для остановки, завершения или приостановки процессов. Вы можете перечислить все доступные сигналы kill с их именами и соответствующими номерами, используя следующую команду, которая выведет список

kill -l

Хотя существует множество доступных сигналов, но в большинстве случаев мы используем только SIGKILL (9) и SIGTERM (15).

Чтобы убить процесс, нам нужно знать Process ID процесса. Процесс – это экземпляр программы. Каждый раз, когда запускается программа, автоматически генерируется уникальный PID для этого процесса.

Каждый процесс в Linux имеет свой pid. Первым процессом, который запускается при загрузке системы Linux, является – init process, поэтому в большинстве случаев ему присваивается значение 1.

Init является главным процессом и не может быть убит таким способом, что гарантирует, что главный процесс не будет случайно убит. Init сам решает и разрешает себя убить, в то время как kill – это просто запрос на завершение работы.

Перед тем, как мы сделаем шаг вперед и выполним команду kill, следует отметить некоторые важные моменты:

  • Пользователь может убить все свои процессы.
  • Пользователь не может убить процесс другого пользователя.
  • Пользователь не может убить процессы, используемые системой.
  • Пользователь root может убить процесс системного уровня и процесс любого пользователя.

Чтобы убить процесс mariadb с определенным PID, используйте команду kill, как показано на рисунке.

kill -9 3383

Приведенная выше команда убьет процесс с pid = 3383, где PID – это числовое значение процесса.

Другой способ выполнения той же функции может быть переписан так.

kill -SIGTERM 3383

Аналогично „kill -9 PID“ аналогичен „kill -SIGKILL PID“ и наоборот.

Чтобы подтвердить завершение процесса, можно снова использовать команду ps.

ps -ef | grep mariadb

Как убить несколько процессов в Linux

Чтобы завершить несколько процессов в Linux, используя их идентификаторы процессов (PID), вы можете использовать команду kill в сочетании с соответствующими номерами PID.

Сначала определите PID процессов, которые вы хотите завершить, используя команду ps или pgrep.

ps aux | grep apache2
OR
pgrep apache2

Получив PID, используйте команду kill, чтобы завершить их.

kill -9 PID1 PID2 PID3

Как убить процесс в Linux, используя имя процесса

Чтобы завершить процесс, используя имя процесса, мы будем использовать команду pkill, которая является версией команды kill, позволяющей указать имя процесса или шаблон для определения местоположения процесса.

Вы должны знать имя процесса, прежде чем убить его, и ввод неправильного имени процесса может испортить вам жизнь.

pkill mysqld

Что если у процесса слишком много экземпляров и несколько дочерних процессов, у нас есть команда „ killall „, которая принимает имя процесса в качестве аргумента вместо его номера.

Как убить процесс в Linux с помощью команды Killall

Основное различие между killall и kill заключается в том, что killall может завершить процесс по его имени, в то время как команда kill полагается на идентификатор процесса (pid).

Чтобы убить все экземпляры mysql вместе с дочерними процессами, используйте следующую команду.

killall mysqld
OR
pkill mysqld

Вы всегда можете проверить статус процесса, запущен он или нет, используя любую из приведенных ниже команд.

systemctl status mysql
pgrep mysql
ps -aux | grep mysql

Утилиты графического мониторинга систем Linux, такие как htop или gnome-system-monitor, предоставляют удобный интерфейс для поиска и уничтожения процессов.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)