Los programas pgrep
y pidof
no son exactamente lo mismo, pero son muy similares. Por ejemplo:
$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1
Como puede ver, pidof
no se pudo encontrar una coincidencia para [i]ref
. Esto se debe a que pidof program
devuelve una lista de todos los ID de proceso asociados con un programa llamado program
. Por otro lado, pgrep re
devuelve una lista de todos los ID de proceso asociados con un programa cuyo nombre coincide con la expresión regular re
.
En sus formas más básicas, la equivalencia es en realidad:
$ pidof 'program'
$ pgrep '^program$'
Como otro ejemplo concreto, considere:
$ 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