Les programmes pgrep
et pidof
ne sont pas tout à fait la même chose, mais ils sont très similaires. Par exemple:
$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1
Comme vous pouvez le voir, pidof
impossible de trouver une correspondance pour [i]ref
. En effet, pidof program
renvoie une liste de tous les ID de processus associés à un programme appelé program
. En revanche, pgrep re
renvoie une liste de tous les ID de processus associés à un programme dont le nom correspond à l'expression régulière re
.
Dans leurs formes les plus élémentaires, l'équivalence est en fait:
$ pidof 'program'
$ pgrep '^program$'
Comme encore un autre exemple concret, considérons:
$ 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