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