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

by itisgood

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

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

Команда Kill отправляет сигналы разных типов, которые позволяют завершать процессы или группы процессов.

Если тип сигнала не указан, будет отправлен сигнал TERM, который является параметром по умолчанию.

Примечание для пользователей среднего уровня: Команда может быть внешней (расположена в /bin/kill) или внутренней (более поздние оболочки) в зависимости от типа оболочки Linux.

В любом случае, его использование очень похоже.

Типы командных сигналов KILL

Наиболее распространенными типами сигналов являются следующие

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

Права, необходимые для завершения процесса

Права следующие:

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

Синтаксис команды KILL

Синтаксис следующий:

kill [options] [signal] PID

Если вы хотите завершить несколько процессов одновременно:

kill [options] [signal] PID1, PID2 ...

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

Примеры команд Kill

Давайте рассмотрим пример, когда вы хотите завершить процесс Apache httpd:

Шаг № 1: Найти PID процесса.

Первое, что вы должны сделать, когда хотите прекратить любой процесс, – это найти его PID.

Для этого вы можете использовать команды ps или pidof.

pidof httpd

Эта команда выдаст вам PID, в данном случае это 22298, который является Идентификатором процесса, хотя в результате вы можете получить список идентификаторов, поскольку у процесса может быть несколько экземпляров.

Вы также можете запустить следующую команду, чтобы найти PID:

ps aux | grep httpd

Шаг № 2: Убить процесс с помощью PID.

PID 22298 – это тот, который назначен процессу httpd.

Чтобы завершить процесс и закрыть сервер Apache, вам нужно передать PID:

kill 22298

Это завершит процесс с PID 22298, что вы можете проверить, если вы снова используете команду pidof или команду ps

pidof httpd

Если мы не будем указывать какой-либо сигнал сигнал SIGTERM (-15) будет использоваться по умолчанию, поэтому следующие команды равны:

kill -15 22298
kill -SIGTERM 22298

Если сигнала SIGTERM (-15) недостаточно, например, когда сокеты Apache открыты, мы можем использовать сигнал SIGKILL (-9):

kill -9 22298
kill -SIGKILL 22298

Этот сигнал гарантирует, что процесс будет завершен, прерывая выполнение любой задачи.

Если в Apache есть несколько запущенных процессов, мы можем устранить их все сразу:

kill -9 22298 222300 222302
kill -15 22298 222300 222302

Команда Killall C

В Linux у нас также есть команда killall для уничтожения процессов по имени, хотя эта команда Unix имеет другую функцию.

Например:

killall -15 httpd

Это закроет все экземпляры процесса Apache httpd в Linux.

Однако в Unix эта команда завершит все процессы, поэтому лучше не запутаться при ее использовании.

Знаете ли вы какой-либо другой способ убить процессы в Linux или столкнулись с проблемами, используя любую из приведенных выше команд?

Дайте мне знать в комментариях.

 

You may also like

Leave a Comment