Поиск по сайту:

Как завершить процесс Linux с помощью Kill, Pkill и Killall


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

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

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

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

Когда это произойдет, нам нужно остановить или «уничтожить» процесс, и именно здесь нам пригодится команда 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)

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

Очевидно из поведения выше:

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

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

kill -l

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

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

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

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

Прежде чем мы продолжим и выполним команду 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, предоставляют удобный интерфейс для поиска и завершения процессов.

Заключение

На этом от меня пока все. Скоро вернусь с еще одной интересной и познавательной темой. А пока следите за обновлениями и связью с Tecmint и заботьтесь о своем здоровье. Не забудьте поделиться своими ценными отзывами в разделе комментариев.