В этой статье рассматриваются основы команды pkill в Linux.
pkill — это утилита командной строки, которая отправляет сигналы процессам запущенной программы на основе заданных критериев. Процессы могут быть указаны их полными или частичными именами, пользователем, выполняющим процесс, или другими атрибутами.
Команда pkill является частью пакета procps (или procps-ng), которая предварительно установлена почти во всех дистрибутивах Linux. pkill — является основой программы pgrep, которая печатает только список соответствующих процессов.
Синтаксис команды pkill следующий:
pkill [OPTIONS] <PATTERN>
Соответствие <PATTERN> указывается с использованием расширенных регулярных выражений.
При вызове без какой-либо опции pkill отправляет сигнал 15( TERM) в PID всех запущенных программ, которые соответствуют данному имени. Например, чтобы корректно остановить все процессы Firefox, вы должны выполнить:
pkill -9 firefox
Команда возвращает 0, когда хотя бы один запущенный процесс соответствует запрошенному имени. В противном случае код выхода есть 1. Это может быть полезно при использовании в сценариях оболочки.
Чтобы отправить другой сигнал согласованным процессам, вызовите pkillкоманду с параметром —signal, за которым следует числовое или символическое имя сигнала. Другой способ отправки сигнала — запуск, pkill за которым следует имя или номер сигнала с префиксом дефиса ( -).
Используйте команду kill -l для получения списка всех доступных сигналов.
Наиболее часто используемые сигналы:
Сигналы могут быть указаны тремя различными способами:
Например, чтобы перезагрузить процессы 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 свой терминал.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Полезный материал.
А есть возможность разделить одноименные запущенные программы?
Например запущено несколько одноименных процессов и нужно остановить всего один из них с конкретным PID.