Die Programme pgrep
und pidof
sind nicht ganz dasselbe, aber sie sind sehr ähnlich. Beispielsweise:
$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1
Wie Sie sehen können, pidof
konnte keine Übereinstimmung für gefunden werden [i]ref
. Dies liegt daran, dass pidof program
eine Liste aller Prozess-IDs zurückgegeben wird, die einem aufgerufenen Programm zugeordnet sind program
. Gibt andererseits pgrep re
eine Liste aller Prozess-IDs zurück, die einem Programm zugeordnet sind, dessen Name mit dem regulären Ausdruck übereinstimmt re
.
In ihren grundlegendsten Formen ist die Äquivalenz tatsächlich:
$ pidof 'program'
$ pgrep '^program$'
Betrachten Sie als weiteres konkretes Beispiel:
$ 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