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

How Kill Process Linux



В каждой операционной системе Linux есть команда kill. Единственная цель этого инструмента - завершить целевой процесс. Это мощный инструмент, который делает Linux довольно универсальным, особенно в области серверов и предприятий, где серьезные изменения / обновления могут вступить в силу без перезапуска всей машины. В этой статье я покажу, как убить процесс с помощью убийство , pkill а также убить всех .

Убиваем процесс

Чтобы убить процесс, мы будем использовать несколько инструментов: убийство , pkill , а также убить всех . Все они работают в основном одинаково.







Эти инструменты сами по себе не завершают процесс. Вместо этого они отправляют назначенный сигнал целевому процессу или группам процессов. Если вы не указали какой-либо конкретный сигнал, SIGTERM отправляется как сигнал по умолчанию. Однако существует ряд поддерживаемых сигналов, например SIGKILL, SIGHUP и т. Д.



Вот основная структура команд для убийство , pkill а также убить всех .



$убийство <signal_or_options> <PID(s)>
$ pkill<signal_or_options> <Имя процесса>
$убить всех <вариант> <Имя процесса>

По возможности рекомендуется использовать убийство .





Убийство , pkill а также убить всех локации

Kill - это команда по умолчанию для завершения процесса.



$убийство --помощь

Он запускается из каталога / usr / bin.

$который убийство

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

$pkill--помощь

$которыйpkill

Некоторые приложения запускают несколько процессов одного и того же исполняемого файла. Если вы хотите завершить несколько процессов с одним и тем же именем, используйте инструмент killall.

$убить всех --помощь

$который убить всех

Список всех запущенных процессов

Самая первая задача - определить PID (идентификационный номер процесса) и / или имя процесса, который вы хотите завершить. В этом примере я буду использовать Firefox в качестве целевого процесса для завершения. Выполните следующую команду, чтобы вывести список всех запущенных процессов в системе.

$пс

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

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

$пидоф <Имя процесса>

Еще один интересный инструмент для получения информации о целевом процессе - pgrep. Он специально разработан для этой цели.

$pgrep<вариант> <Имя процесса>

Убить сигналы

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

Во-первых, давайте взглянем на список саппортов kill.

$убийство -

Есть 2 способа определить, какой сигнал вы хотите отправить. Вы можете использовать полное имя сигнала или его эквивалентное значение.

$убийство-<сигнал> <PID>

Или,

$убийство-<signal_value> <PID>

Самые популярные сигналы - это SIGHUP (1), SIGKILL (9) и SIGTERM (15). Как правило, SIGTERM - это самый безопасный способ по умолчанию для завершения целевого процесса.

В случае pkill поддерживаемый сигнал такой же, как kill. Однако в случае killall количество поддерживаемых сигналов и их имена различаются.

$убить всех -

Убиваем процесс

Чтобы убить процесс, нам нужен PID этого целевого процесса. Предполагая, что у вас есть PID, выполните следующую команду, чтобы убить его.

$убийство <вариант> <PID>

Здесь kill отправит PID сигнал по умолчанию SIGTERM. Если вы хотите завершить несколько процессов, укажите все PID через пробел.

$убийство <вариант> <PID_1> <PID_2>

Уточним, какой сигнал вы хотите послать цели.

Хотите завершить процесс, используя только его имя? Используйте pkill.

$pkill<вариант> <Имя процесса>

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

$убить всех <вариант> <Имя процесса>

Например, при запуске Firefox запускается несколько процессов. Чтобы убить их всех сразу, выполните эту команду.

$убить всехFire Fox

Хотите завершить все процессы, запущенные под определенным пользователем? Киллалл справится с работой, без проблем. Будьте осторожны при запуске этого, так как это может сломать систему и создать другие проблемы. Это не сработает, если вы пытаетесь завершить процессы, запущенные под другим пользователем с более высокими привилегиями.

$убить всех -u <Пользователь>

Конфликт разрешений

Неотъемлемые характеристики иерархии пользователей Linux также применимы, когда вы собираетесь завершить работу приложения. Пользователь не может завершать процессы, которые выполняются с более высокими привилегиями, только процессы с такими же / более низкими привилегиями. Более того, пользователь не может манипулировать процессами, которые выполняются под другим пользователем.

Например, давайте рассмотрим команду yes. Если он вызывается от имени текущего пользователя, его можно легко завершить с помощью kill.

$убийство да

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

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

Последние мысли

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

$человек убийство

$человекpkill

Наслаждаться!