PGREP(1)

НАЗВА
pgrep, pkill, pidwait — пошук, надсилання сигналів процесам або очікування на завершення роботи процесів на основі даних щодо їхньої назви та інших атрибутів

КОРОТКИЙ ОПИС
pgrep [параметр ...] взірець

pkill [параметр ...] взірець

pidwait [параметр ...] взірець

ОПИС
pgrep виконує пошук серед поточних запущених процесів і виводить список ідентифікаторів процесів, які відповідають критерію вибору до stdout. Виконуватися мають усі критерії. Наприклад,

    $ pgrep -u root sshd

покаже список процесів, чия назва містить sshd і належать root. З іншого боку,

    $ pgrep -u root,daemon

виведе список процесів, власником яких є root або daemon.

pkill надішле вказаний сигнал (типово SIGTERM) кожному процесу, замість виведення списку процесів до stdout.

pidwait чекатиме на усі процеси замість виведення їхнього списку до stdout.

ПАРАМЕТРИ

-сигнал
--signal сигнал
    Визначає сигнал, який слід надіслати кожному відповідному процесу. Можна скористатися числовим значенням або символічною назвою сигналу. У режимі pgrep або pidwait можна використовувати лише довгу версію параметра. У цьому режимі параметр не працює, якщо не використано у поєднанні із --require-handler для фільтрування процесів із наявним обробником певного сигналу у просторі користувача.

-a, --list-full
    Вивести список рядків команд повністю, а також ідентифікаторів процесів. (Лише pgrep.)

-A, --ignore-ancestors
    Ігнорувати усі попередники pgrep, pkill та pidwait. Наприклад, це може бути корисним при розширенні прав доступу за допомогою sudo або подібних інструментів.

-c, --count
    Придушити звичайне виведення. Замість цього, вивести кількість відповідних процесів. Якщо не вдасться знайти нічого, наприклад, буде повернуто нульове значення, програма поверне ненульове значення помилки. Зауважте, що для pkill і pidwait кількість є кількістю відповідних процесів, а не кількістю процесів, яким було успішно надіслано сигнал, або кількість процесів, на які очікувала програма.

-d, --delimiter роздільник
    Встановлює рядок, що використовуватиметься для відокремлення ідентифікаторів процесів у виведених даних (типовим роздільником є символ розриву рядка). (Лише pgrep.)

-e, --echo
    Показати назву і PID процесів, роботу яких буде завершено (лише pkill).

-f, --full
    Зазвичай, відповідність взірця встановлюється лише для назви процесу. Якщо використано -f, відповідність встановлюється за цілим рядком команди.

-F, --pidfile файл
    Прочитати PID з файла. Ймовірно, цей параметр корисніший для pkill або pidwait, а не для pgrep. Назву файла "-" можна використати для читання з STDIN. Конфліктує з параметром --pid.

-g, --pgroup група процесів,...
    Встановлювати відповідність процесів лише для вказаного списку ідентифікаторів груп. Група процесів 0 відповідає власній групі процесів pgrep, pkill або pidwait.

-G, --group gid,...
    Встановлювати відповідність процесів зі списку справжніх ідентифікаторів груп. Можна використовувати цифрове або символічне значення ідентифікатора.

-H, --require-handler
    Встановлювати відповідність лише тих процесів, які мають обробник сигналу, який має бути надіслано, у просторі користувача.

-i, --ignore-case
    Виконувати пошук процесів без врахування регістру символів.

-l, --list-name
    Вивести список назв процесів, а також ідентифікаторів процесів. (Лише pgrep.)

-L, --logpidfile
    Завершувати роботу повідомленням про помилку, якщо pid-файл (див. -F) не заблоковано.

-m, --mrelease
    Після надсилання сигналу викликати системну функцію process_mrelease() для негайного вивільнення пам'яті цільового процесу.

-n, --newest
    Вибрати лише найновіші (запущені якомога пізніше) відповідні процеси.

-o, --oldest
    Вибрати лише найдавніші (запущені якомога раніше) відповідні процеси.

-O, --older секунди
    Вибрати процеси, які є старішими за вказану кількість секунд.

-p, --pid pid,...
    Встановлювати відповідність лише тих процесів зі вказаного списку. Конфліктує з параметром --pidfile.

-P, --parent ppid,...
    Встановлювати відповідність лише тих процесів, які мають батьківські процеси зі вказаного списку.

-q, --queue значення
    Надіслати ціле число значення разом із сигналом. Цей параметр використовує pidfd_send_signal(2) зі значенням або sigqueue(3), а не kill(2). Якщо у процесі, який його отримає, встановлено обробки сигналу, який використовує прапорець SA_SIGINFO sigaction(2), процес зможе отримати ці дані за допомогою поля si_value структури siginfo_t.

-Q, --shell-quote
    Виводити рядок команди у формі з екрануванням для оболонки. (лише для pgrep.)

-r, --runstates D,R,S,Z,...
    Виконати пошук лише тих процесів, які відповідають вказаному значенню стану процесу.

-s, --session sid,...
    Встановлювати відповідність лише тих процесів, які мають ідентифікатори сеансів процесів зі вказаного списку. Ідентифікатор 0 відповідає ідентифікаторам сеансів самих програм pgrep, pkill або pidwait.

-t, --terminal термінал,...
    Встановлювати відповідність лише процесів із терміналом керування із вказаного списку. Назву термінала слід вказувати без префікса «/dev/».

-u, --euid euid,...
    Встановлювати відповідність процесів зі списку ідентифікаторів ефективних користувачів. Можна використовувати цифрове або символічне значення ідентифікатора.

-U, --uid uid,...
    Встановлювати відповідність процесів зі списку справжніх ідентифікаторів користувачів. Можна використовувати цифрове або символічне значення ідентифікатора.

-v, --inverse
    Інвертує відповідність. Зазвичай, цей параметр використовується у контексті pgrep або pidwait. У контексті pkill скорочену форму параметра вимкнено для того, щоб запобігти випадковому використанню цього параметра.

-w, --lightweight
    Показує усіх ідентифікатори потоків обробки, замість ідентифікаторів, у контексті pgrep або pidwait. У контексті pkill цей параметр вимкнено.

-x, --exact
    Встановлювати відповідність лише процесів, назви яких (або рядки команд, якщо вказано параметр -f) точно відповідає взірцю.

--cgroup назва,...
    Встановити відповідність наданій назві групи керування (cgroup) у версії 2. Див. cgroups(7)

--env назва[=значення],...
    Встановити відповідність з процесом, який має ці змінні середовища. Якщо параметр =значення не визначено, встановлення відповідності відбуватиметься лише за назвою змінної.

--ns pid
    Встановлювати відповідність процесів, які належать до одного простору назв. Для встановлення відповідності для процесів інших користувачів програму має бути запущено від імені користувача root. Див. довідку щодо --nslist, щоб дізнатися про те, як обмежити перелік відповідних просторів назв.

--nslist назва,...
    Встановлювати відповідність лише для вказаних просторів назв. Можливі простори назв: ipc, mnt, net, pid, user, uts.

--quiet
    Нічого не записувати до стандартного виведення (лише для pgrep).

-V, --version
    Вивести дані щодо версії і завершити роботу.

-h, --help
    Показати довідкові дані і завершити роботу.

ОПЕРАНДИ

взірець
    Вказує розширений формальний вираз для відповідності за назвами процесів або рядками команд.

ПРИКЛАДИ
Приклад 1: знайти ідентифікатор процесу фонової служби named:

    $ pgrep -u root named

Приклад 2: змусити syslog виконати повторне читання файла налаштувань:

    $ pkill -HUP syslogd

Приклад 3: надати докладну інформацію щодо усіх процесів bash:

    $ ps -fp $(pgrep -d, -x bash)

Приклад 4: підвищити пріоритетність усіх процесів chrome:

    $ renice +4 $(pgrep chrome)

Приклад 5: очікування на завершення роботи процесу із відомим PID:

    $ echo ${PID} | pidwait -F -

СТАН ВИХОДУ

0   Вказаному критерію відповідає один або декілька процесів. Для pkill і pidwait також має бути один або декілька процесів, яким успішно надіслано сигнал або які перебувають у стані очікування.

1   Не знайдено жодного відповідного процесу або жодному зі знайдених процесів не вдалося надіслати сигнал.

2   Синтаксична помилка у рядку команди.

3   Критична помилка: вичерпано пам’ять тощо.

ЗАУВАЖЕННЯ
Назву процесу, що використовується для встановлення відповідності, обмежено 15 символами, які виводить /proc/pid/stat. Для встановлення відповідності за цілим командним рядком, /proc/pid/cmdline, скористайтеся параметром -f. Потоки обробки можуть не мати такої самої назви процесу, що і батьківський процес, але матимуть той самий рядок команди.

Запущений процес pgrep, pkill або pidwait ніколи не повідомлятиметься самим собою як відповідник.

Використання параметра -O --older буде без повідомлень не враховано, якщо /proc змонтовано з параметром subset=pid.

pkill зробить спробу скористатися pidfd_send_signal(2), а не kill(2) чи sigqueue(3), щоб надіслати сигнал цільовому процесу, якщо функція може отримати дескриптор файла процесу.

ВАДИ
Не можна одночасно використовувати параметри -n, -o та -v одночасно. Повідомте авторам, якщо вам потрібне таке поєднання.

Якщо процеси запускаються в один і той самий такт (зазвичай, але не завжди, в межах сотої частки секунди), параметри -n та -o не зможуть розрізнити, який процес запустився в один і той самий такт, і можуть видати помилкові результати.

Програма повідомляє про щезлі процеси.

pidwait потребує системного виклику pidfd_open(2), який вперше з'явився у Linux 5.3.

ТАКОЖ ПЕРЕГЛЯНЬТЕ
killall(1), kill(1), ps(1), skill(1), kill(2), sigaction(2), pidfd_open(2), pidfd_send_signal(2), sigqueue(3), cgroups(7), regex(7), signal(7)

Як надіслати звіт про вади
Про вади, будь ласка, повідомляйте на адресу procps@freelists.org.