Команда Pkill в Linux

В этой статье рассматриваются основы команды Linux pkill .

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

Команда pkill является частью пакета procps (или procps-ng ), который предварительно установлен почти во всех дистрибутивах Linux. pkill — это pkill оболочка программы pgrep которая выводит только список подходящих процессов.

Как использовать команду pkill

Синтаксис команды pkill следующий:

pkill [OPTIONS] <PATTERN>

Соответствующий <PATTERN> указывается с использованием расширенных регулярных выражений.

При вызове без какой-либо опции pkill отправляет сигнал 15 ( TERM ) идентификаторам PID всех запущенных программ, которые соответствуют заданному имени. Например, чтобы корректно остановить все процессы firefox, вы должны запустить:

pkill -9 firefox

Команда возвращает 0 если хотя бы один запущенный процесс совпадает с запрошенным именем. В противном случае код выхода1 . Это может быть полезно при написании сценариев оболочки.

Чтобы отправить другой сигнал согласованным процессам, вызовите команду pkill с параметром --signal , за которым следует числовое или символьное имя сигнала. Другой способ отправить сигнал — запустить pkill за которым следует имя сигнала или номер с префиксом дефиса ( - ).

Используйте команду kill -l чтобы kill -l список всех доступных сигналов.

Наиболее часто используемые сигналы:

  • 1 ( HUP ): перезагрузить процесс.
  • 9 ( KILL ): убить процесс.
  • 15 ( TERM ): корректно остановить процесс.

Сигналы можно указать тремя разными способами:

  • используя число (например, -1)
  • с префиксом «SIG» (например, -SIGHUP)
  • без префикса «SIG» (например, -HUP).

Например, чтобы перезагрузить процессы Nginx, вы должны запустить:

pkill -HUP nginx

pkill использует регулярные выражения для сопоставления имен процессов. Всегда рекомендуется использовать команду pgrep для печати согласованных процессов перед отправкой им сигналов. Например, чтобы перечислить все процессы, которые содержат «ssh» в своих именах:

1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent

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

pkill '^ssh$'
Символ каретки ( ^ ) соответствует началу строки и доллару $ в конце.

По умолчанию pkill сопоставляется только с именем процесса. Когда используется опция -f , команда сопоставляется с полными списками аргументов. Если команда содержит пробелы, заключите всю команду в кавычки:

pkill -9 -f "ping 8.8.8.8"

Используйте параметр -u чтобы указать pkill на соответствие процессам, запускаемым данным пользователем:

pkill -u mark

Чтобы указать нескольких пользователей, разделите их имена запятыми:

pkill -u mark,danny

Вы также можете комбинировать параметры и шаблоны поиска. Например, чтобы отправить сигнал KILL всем процессам, которые запускаются под пользователем «mark» и содержат в своих именах «gnome», вы должны ввести:

pkill -9 -u mark gnome

Чтобы отображать только самые последние (самые старые) или самые последние (самые новые) запущенные процессы, используйте параметр -n (для самых новых) или -o (для самых старых).

Например, чтобы убить последний созданный экран :

pkill -9 -n screen

Выводы

Команда pkill используется для отправки сигналов запущенным программам на основе различных критериев.

Для получения дополнительной информации о команде pkill посетите страницу руководства pkill или введите man pkill в своем терминале.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий