Pidof ve pgrep arasındaki fark nedir?


13

Bu komutlardan birini işlem adı olarak bir argümanla kullandığımda, her ikisi de aynı sayıyı döndürür. Aynı komutlar mı? Aynı şeyi yapan iki farklı komut mu? Bunlardan biri diğerinin takma adı mı?

pidof firefox
pgrep firefox

Yanıtlar:


18

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

4

Fox, pgrepdüzenli ifadeler kullanarak arama yaparken pidofbunu söylemedi.

Ama pgrepaynı zamanda çok daha fazla seçenek var:

  • İle -u "$UID"yalnızca geçerli kullanıcıya ait işlemleri eşleştirebilirsiniz.
  • İle --parentsize verilen bir sürecin alt işlemler bulabilirsiniz.
  • Eşleşen işlemlerden birini --oldestveya seçebilirsiniz --newest.
  • ... ve diğer sayfalarda listelenen diğerleri ...

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.