Поиск по сайту:

Учебник по команде Linux pgrep для начинающих (10 примеров)


На этой странице

  1. Команда Linux pgrep
  2. Q1. Как узнать идентификатор процесса, принадлежащего конкретному пользователю?
  3. Вопрос 2. Как заставить pgrep печатать подсчет совпадающих процессов?
  4. Вопрос 3. Как использовать настраиваемый разделитель в выводе?
  5. Q4. Как сделать поиск pgrep нечувствительным к регистру?
  6. В5. Как сделать список процессов списка pgrep также?
  7. Q6. Как сделать команду pgrep list полной?
  8. Q7. Как заставить pgrep отображать только самый новый процесс?
  9. Q8. Как заставить pgrep отображать только самый старый процесс?
  10. Заключение

Возможно, вы уже знаете о команде grep в Linux, которая ищет шаблон, а затем выводит соответствующий текст. Что делать, если требуется применить этот вид обработки для выборочной информации о процессах, запущенных в настоящее время в системе?

Что ж, вы будете рады узнать, что существует инструмент командной строки — pgrep — который позволяет вам делать именно это. В этом уроке мы обсудим основы pgrep, используя несколько простых для понимания примеров. Но прежде чем мы это сделаем, стоит упомянуть, что все приведенные здесь примеры были протестированы на компьютере с Ubuntu 20.04 LTS и на Debian 10.

Linux-команда pgrep

Команда pgrep в Linux позволяет пользователям искать процессы по имени и другим атрибутам. Ниже приведен его синтаксис:

pgrep [options] pattern

И вот как это объясняет справочная страница инструментов:

pgrep looks through the currently running processes and lists the process IDs which match the 
selection criteria to stdout. All the criteria have to match.

Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам хорошее представление о том, как работает команда pgrep.

Q1. Как узнать идентификатор процесса, принадлежащего конкретному пользователю?

Это можно сделать с помощью параметра командной строки -u. Например, чтобы найти идентификатор процесса gedit, принадлежащего пользователю himanshu, используйте pgrep следующим образом:

pgrep -u himanshu gedit

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

Q2. Как заставить pgrep печатать подсчет совпадающих процессов?

Если вы хотите, чтобы инструмент просто печатал количество, а не сами идентификаторы, используйте параметр командной строки -c. Например, чтобы узнать количество процессов, принадлежащих пользователю himanshu, выполните следующую команду:

pgrep -c -u himanshu

Ниже приведен вывод, который эта команда произвела в моей системе:

83

Q3. Как использовать настраиваемый разделитель в выводе?

По умолчанию идентификаторы процессов в выводе разделяются новой строкой. Однако, если вы хотите, вы можете изменить разделитель, что вы можете сделать с помощью параметра командной строки -d.

Например, я хотел использовать двоеточие (:) в качестве разделителя, поэтому выполнил команду pgrep следующим образом:

pgrep -u himanshu -d:

И ниже приведен вывод, который произвела команда:

1793:1794:1807:1811:1813:1817:1820:1914:1917:1922:1925:1936:1938:1954:1974:1978:1980:1982:1993:1999
:2008:2009:2012:2020:2024:2034:2036:2043:2048:2049:2051:2052:2055:2064:2068:2073:2074:2085:2088:
2093:2094:2095:2098:2101:2104:2117:2125:2161:2162:2168:2173:2182:2201:2213:2233:2245:2266:2279:
2388:2409:2430:2456:2473:2564:2647:3085:3108:3178:3284:3297:3320:3325:3467:3487:3980:4040:4658:
5668:5721:5777:6271:6281:6512:6808

Q4. Как сделать поиск pgrep нечувствительным к регистру?

По умолчанию поиск pgrep чувствителен к регистру. Однако, если вы хотите, вы можете сделать его нечувствительным к регистру. Для этого вы должны использовать параметр командной строки -i.

Например:

pgrep -i gedit

Q5. Как сделать список процессов списка pgrep также?

Для этого используйте параметр командной строки -l.

Вот пример:

pgrep -u himanshu -l

Вот выдержка из вывода, полученного в моей системе:

1793 systemd
1794 (sd-pam)
1807 gnome-keyring-d
1811 gdm-x-session
1813 Xorg
1817 dbus-daemon
1820 gnome-session-b
1914 ssh-agent
1917 gvfsd
1922 gvfsd-fuse
1925 at-spi-bus-laun
1936 dbus-daemon
1938 at-spi2-registr
1954 gnome-shell
1974 ibus-daemon
1978 ibus-dconf
1980 ibus-x11
1982 ibus-portal
1993 gnome-shell-cal
1999 evolution-sourc
2008 dconf-service
2009 gvfs-udisks2-vo
2012 goa-daemon
2020 gvfs-mtp-volume
2024 gvfs-goa-volume
...
...
...

Таким образом, вы можете видеть, что помимо идентификаторов процессов в выходных данных также были созданы имена процессов.

Q6. Как сделать команду pgrep list полной?

Если вы хотите, чтобы pgrep отображал полную команду, которая использовалась для запуска каждого процесса, используйте параметр командной строки -a.

pgrep -u himanshu -a
1793 /lib/systemd/systemd --user
1794 (sd-pam)
1807 /usr/bin/gnome-keyring-daemon --daemonize --login
1811 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1813 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
1817 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
1820 /usr/lib/gnome-session/gnome-session-binary --session=ubuntu
1914 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1917 /usr/lib/gvfs/gvfsd
1922 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
1925 /usr/lib/at-spi2-core/at-spi-bus-launcher
1936 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
1938 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
1954 /usr/bin/gnome-shell
1974 ibus-daemon --xim --panel disable
1978 /usr/lib/ibus/ibus-dconf
1980 /usr/lib/ibus/ibus-x11 --kill-daemon
1982 /usr/lib/ibus/ibus-portal
1993 /usr/lib/gnome-shell/gnome-shell-calendar-server
1999 /usr/lib/evolution/evolution-source-registry
2008 /usr/lib/dconf/dconf-service
2009 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
2012 /usr/lib/gnome-online-accounts/goa-daemon
2020 /usr/lib/gvfs/gvfs-mtp-volume-monitor
2024 /usr/lib/gvfs/gvfs-goa-volume-monitor
2034 /usr/lib/gnome-online-accounts/goa-identity-service
2036 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
2043 /usr/lib/gvfs/gvfs-afc-volume-monitor

Q7. Как заставить pgrep отображать только самый новый процесс?

Если вместо всех процессов вы хотите, чтобы pgrep выводил только самый последний процесс, то это можно сделать с помощью параметра командной строки -n.

Вот пример:

pgrep -u himanshu -n -l

И вот результат, который произвела эта команда:

7163 thunderbird

Я могу подтвердить, что Thunderbird действительно был самым последним процессом, запущенным пользователем himanshu.

Q8. Как заставить pgrep отображать только самый старый процесс?

Для этого используйте параметр командной строки -o.

pgrep -u himanshu -o -l

И вот вывод этой команды:

1793 systemd

Заключение

Итак, вы видите, что pgrep — чрезвычайно полезная команда. После того, как вы попрактикуетесь с параметром командной строки, который мы здесь обсуждали, вы можете перейти на справочную страницу инструментов, чтобы узнать о нем больше.