Поиск процесса с pgrep

Последнее обновление: 15.03.2024

Ключевым атрибутом процесса является его идентификатор или PID. С помощью идентификатора можно манипулировать процессом. Команда pgrep позволяет найти идентификатор процесса и некоторую дополнительную информацию по определенному шаблону:

pgrep [options] шаблон

В качестве обязательного параметра команда принимает шаблон, которому должен соответствовать процесс. А параметр options указывает, как интерпретировать/применять этот шаблон.

Приведу основные опции, которые может принимать команда:

  • -l, --list-name: выводит список идентификаторов и имя команды

  • -a, --list-full: выводит список идентификаторов и полное имя команды

  • -v, --inverse: ищет все процессы, которые НЕ соответствуют шаблону

  • -c, --count: выводит количество процессов, которые соответствуют шаблону

  • -f, --full: использует полное имя процесса

  • -i, --ignore-case: при соответствии шаблону не учитывается регистр

  • -n, --newest: выбирает наиболее новые процессы

  • -o, --oldest: выбирает наиболее старые процессы

  • -O, --older <seconds>: выбирает процессы, которые запущены как минимум seconds секунд назад

  • -P, --parent <PPID,...>: выбирает только дочерние процессы определенного родительского процесса с идентификаторомPPID

  • -u, --euid <ID,...>: выбирает процессы по определенному пользователю

  • -x, --exact: устанавливает точное соответствие имени команды

Например, выведем идентификаторы всех процессов, для запуска которых применялась команда "gnome-shell":

eugene@Eugene:~$ pgrep gnome-shell
2645
2819
eugene@Eugene:~$ 

Идентификаторы всех процессов, связанных с браузером Google Chrome:

eugene@Eugene:~$ pgrep chrome
3822
10848
10857
10859
10865
10866
10868
10892
10893
10904
10940
10941
11018
eugene@Eugene:~$ 

Теперь выведем идентификаторы всех процессов, у которых команда содержит "gnome":

eugene@Eugene:~$ pgrep *gnome*
2418
2520
2599
2621
2645
2819
3581

В данном случае зведочка * в шаблоне указывает на произвольное количество произвольных символов. То есть шаблон "*gnome*" будет соответствовать, например, строке "gnome-shell" или "gnome-terminal-"

Или выведем все процессы с командами, которые содержат "gnome":

eugene@Eugene:~$ pgrep -l *gnome*
2418 gnome-keyring-d
2520 gnome-session-b
2599 gnome-session-c
2621 gnome-session-b
2645 gnome-shell
2819 gnome-shell-cal
3581 gnome-terminal-
eugene@Eugene:~$ 

Или выведем с полным именем команды:

eugene@Eugene:~$ pgrep -a *gnome*
2418 /usr/bin/gnome-keyring-daemon --foreground --components=pkcs11,secrets --control-directory=/run/user/1000/keyring
2520 /usr/libexec/gnome-session-binary --session=ubuntu
2599 /usr/libexec/gnome-session-ctl --monitor
2621 /usr/libexec/gnome-session-binary --systemd-service --session=ubuntu
2645 /usr/bin/gnome-shell
2819 /usr/libexec/gnome-shell-calendar-server
3581 /usr/libexec/gnome-terminal-server
eugene@Eugene:~$ 

Получим количество подобных процессов:

eugene@Eugene:~$ pgrep -c *gnome*
7
eugene@Eugene:~$ 

И еще один пример - выберем процессы по пользователю (в моем случае по пользователю eugene):

eugene@Eugene:~$ pgrep -l -u eugene
2383 systemd
2388 (sd-pam)
2395 pipewire
2396 pipewire
2402 ubuntu-report
2403 wireplumber
2415 pipewire-pulse
2418 gnome-keyring-d
2419 dbus-daemon
2470 xdg-document-po
2474 xdg-permission-
2514 gdm-wayland-ses
2520 gnome-session-b
2571 gcr-ssh-agent
2599 gnome-session-c
2613 gvfsd
2621 gnome-session-b
2644 at-spi-bus-laun
2645 gnome-shell
2653 dbus-daemon
2819 gnome-shell-cal

Стоит отметить, что идентификаторы процессов по имени команды мы также можем получить с помощью команды pidof:

eugene@Eugene:~$ pidof chrome
12459 12362 12359 12343 12331 12329 12305 12303 12302 12285

Команде pidof передается точное имя процесса.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850