Los programas pgrepy pidofno 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, pidofno se pudo encontrar una coincidencia para [i]ref. Esto se debe a que pidof programdevuelve una lista de todos los ID de proceso asociados con un programa llamado program. Por otro lado, pgrep redevuelve 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