Yanıtlar:
Programlar pgrepve pidofaynı şey değil, ama çok benzerler. Örneğin:
$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1
Gördüğünüz gibi, pidofiçin bir eşleşme bulunamadı [i]ref. Bunun nedeni pidof program, çağrılan bir programla ilişkili tüm işlem kimliklerinin bir listesini döndürmesidir program. Öte yandan, pgrep readı normal ifadeyle eşleşen bir programla ilişkili tüm işlem kimliklerinin bir listesini döndürür re.
En temel formlarında, denklik aslında:
$ pidof 'program'
$ pgrep '^program$'
Yine somut bir örnek olarak, şunları göz önünde bulundurun:
$ 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
Fox, pgrepdüzenli ifadeler kullanarak arama yaparken pidofbunu söylemedi.
Ama pgrepaynı zamanda çok daha fazla seçenek var:
-u "$UID"yalnızca geçerli kullanıcıya ait işlemleri eşleştirebilirsiniz.--parentsize verilen bir sürecin alt işlemler bulabilirsiniz.--oldestveya seçebilirsiniz --newest.Her sürecin hangi pakete ait olduğunu bulalım (apt sistemlerinde):
$ dpkg -S "$(which pidof)"
sysvinit-utils: /bin/pidof
$ dpkg -S "$(which pgrep)"
procps: /usr/bin/pgrep