В чем разница между pidof и pgrep?

Нет, установка в настоящее время не выполняется. Чтобы правильно отслеживать, только одна программа может выполнять задачи, связанные с программным пакетом, одновременно, в этом случае, вероятно, это виджет, который иногда сообщает вам, что у вас есть новые обновления для установки, ищущие обновления в фоновом режиме. Думаю, просто подожди несколько минут и попробуй еще раз.

11
16.03.2017, 03:27
2 ответа

Программы pgrep и pidof не совсем одно и то же, но они очень похожи. Например:

$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1

Как видите, pidof не смог найти соответствие для [i]ref. Это потому, что pidof program возвращает список всех идентификаторов процессов, связанных с программой под названием program. С другой стороны, pgrep re возвращает список всех идентификаторов процессов, связанных с программой, имя которой соответствует регулярному выражению re.

В самых простых формах эквивалентность выглядит следующим образом:

$ pidof 'program'
$ pgrep '^program$'

В качестве еще одного конкретного примера рассмотрим:

$ ps ax | grep '[w]atch'
   12 ?        S      0:04 [watchdog/0]
   15 ?        S      0:04 [watchdog/1]
   33 ?        S<     0:00 [watchdogd]
18451 pts/5    S+     0:02 watch -n600 tail log-file
$ pgrep watch
12
15
33
18451
$ pidof watch
18451
17
27.01.2020, 19:57

Fox упомянул, что pgrep выполняет поиск с использованием регулярных выражений, а pidof — нет.

Но pgrep также имеет гораздо больше доступных опций:

  • С помощью -u "$UID" вы можете сопоставить только процессы, принадлежащие текущему пользователю.
  • С помощью --parent вы можете найти дочерние процессы данного процесса.
  • Вы можете выбрать --самый старый или --самый новый из соответствующих процессов.
  • ...и многие другие, перечисленные на странице руководства...

Давайте выясним, к какому пакету принадлежит каждый процесс (в подходящих системах):

$ dpkg -S "$(which pidof)"
sysvinit-utils: /bin/pidof

$ dpkg -S "$(which pgrep)"
procps: /usr/bin/pgrep
6
27.01.2020, 19:57

Теги

Похожие вопросы