PGREP(1) General Commands Manual 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** *сигнал*](#signal)

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

[**-a**, **--list-full**](#a)

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

[**-A**, **--ignore-ancestors**](#A)

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

[**-c**, **--count**](#c)

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

[**-d**, **--delimiter** *роздільник*](#d)

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

[**-e**, **--echo**](#e)

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

[**-f**, **--full**](#f)

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

[**-F**, **--pidfile** *файл*](#F)

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

[**-g**, **--pgroup** *група процесів*,...](#g)

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

[**-G**, **--group** *gid*,...](#G)

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

[**-H**, **--require-handler**](#H)

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

[**-i**, **--ignore-case**](#i)

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

[**-l**, **--list-name**](#l)

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

[**-L**, **--logpidfile**](#L)

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

[**-m**, **--mrelease**](#m)

Після надсилання сигналу викликати системну функцію **process\_mrelease**() для негайного вивільнення пам'яті цільового процесу.

[**-n**, **--newest**](#n)

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

[**-o**, **--oldest**](#o)

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

[**-O**, **--older** *секунди*](#O)

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

[**-p**, **--pid** *pid*,...](#p)

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

[**-P**, **--parent** *ppid*,...](#P)

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

[**-q**, **--queue значення**](#q)

Надіслати ціле число *значення* разом із сигналом. Цей параметр використовує [**pidfd\_send\_signal**(2)](/man/os/procps/pidfd_send_signal.2) зі значенням або [**sigqueue**(3)](/man/os/procps/sigqueue.3), а не [**kill**(2)](/man/os/procps/kill.2). Якщо у процесі, який його отримає, встановлено обробки сигналу, який використовує прапорець SA\_SIGINFO [**sigaction**(2)](/man/os/procps/sigaction.2), процес зможе отримати ці дані за допомогою поля si\_value структури siginfo\_t.

[**-Q**, **--shell-quote**](#Q)

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

[**-r**, **--runstates** *D,R,S,Z,*...](#r)

Виконати пошук лише тих процесів, які відповідають вказаному значенню стану процесу.

[**-s**, **--session** *sid*,...](#s)

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

[**-t**, **--terminal** *термінал*,...](#t)

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

[**-u**, **--euid** *euid*,...](#u)

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

[**-U**, **--uid** *uid*,...](#U)

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

[**-v**, **--inverse**](#v)

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

[**-w**, **--lightweight**](#w)

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

[**-x**, **--exact**](#x)

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

[**--cgroup назва,...**](#cgroup)

Встановити відповідність наданій назві групи керування (cgroup) у версії 2. Див. [**cgroups**(7)](/man/os/procps/cgroups.7)

[**--env назва**\[*=значення*\],...](#env)

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

[**--ns pid**](#ns)

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

[**--nslist назва,...**](#nslist)

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

[**--quiet**](#quiet)

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

[**-V**, **--version**](#V)

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

[**-h**, **--help**](#h)

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

# ОПЕРАНДИ

*взірець*

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

# ПРИКЛАДИ

Приклад 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)](/man/os/procps/pidfd_send_signal.2), а не [**kill**(2)](/man/os/procps/kill.2) чи [**sigqueue**(3)](/man/os/procps/sigqueue.3), щоб надіслати сигнал цільовому процесу, якщо функція може отримати дескриптор файла процесу.

# ВАДИ

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

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

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

**pidwait** потребує системного виклику [**pidfd\_open**(2)](/man/os/procps/pidfd_open.2), який вперше з'явився у Linux 5.3.

# ТАКОЖ ПЕРЕГЛЯНЬТЕ

[**killall**(1)](/man/os/procps/killall.1), [**kill**(1)](/man/os/procps/kill.1), [**ps**(1)](/man/os/procps/ps.1), [**skill**(1)](/man/os/procps/skill.1), [**kill**(2)](/man/os/procps/kill.2), [**sigaction**(2)](/man/os/procps/sigaction.2), [**pidfd\_open**(2)](/man/os/procps/pidfd_open.2), [**pidfd\_send\_signal**(2)](/man/os/procps/pidfd_send_signal.2), [**sigqueue**(3)](/man/os/procps/sigqueue.3), [**cgroups**(7)](/man/os/procps/cgroups.7), [**regex**(7)](/man/os/procps/regex.7), [**signal**(7)](/man/os/procps/signal.7)

# Як надіслати звіт про вади

Про вади, будь ласка, повідомляйте на адресу [procps@freelists.org](mailto:procps@freelists.org).

29 грудня 2025 року procps-ng

---

Document: pgrep(1) from procps 4.0.7-r1 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-4.0.7.tar.xz
