पिडोफ और pgrep में क्या अंतर है?


13

जब मैं किसी प्रक्रिया के नाम के रूप में एक तर्क के साथ इन आदेशों में से किसी का उपयोग करता हूं, तो दोनों एक ही समान संख्या वापस करते हैं। क्या वे एक ही आज्ञा हैं? क्या वे दो अलग-अलग कमांड हैं जो एक ही काम करते हैं? क्या उनमें से एक दूसरे के लिए उपनाम है?

pidof firefox
pgrep firefox

जवाबों:


18

कार्यक्रम pgrepऔर pidofएक ही चीज नहीं हैं, लेकिन वे बहुत समान हैं। उदाहरण के लिए:

$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1

जैसा कि आप देख सकते हैं, pidofके लिए एक मैच खोजने में विफल रहा [i]ref। ऐसा इसलिए है क्योंकि pidof programएक प्रोग्राम से जुड़ी सभी प्रक्रिया आईडी की सूची देता है program। दूसरी ओर, pgrep reएक प्रोग्राम से जुड़ी सभी प्रक्रिया आईडी की सूची लौटाता है जिसका नाम नियमित अभिव्यक्ति से मेल खाता है re

उनके सबसे बुनियादी रूपों में, समानता वास्तव में है:

$ pidof 'program'
$ pgrep '^program$'

एक और ठोस उदाहरण के रूप में, विचार करें:

$ 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

फॉक्स ने उल्लेख किया है कि pgrepखोज नियमित अभिव्यक्ति का उपयोग करते हुए pidofहोती है , जबकि ऐसा नहीं है।

लेकिन इसके pgrepअलावा भी बहुत सारे विकल्प उपलब्ध हैं:

  • साथ -u "$UID"आप वर्तमान उपयोगकर्ता से संबंधित केवल प्रक्रियाओं से मेल कर सकते हैं।
  • साथ --parentआप किसी दिए गए प्रक्रिया के बच्चे प्रक्रियाओं पा सकते हैं।
  • आप --oldestया --newestमेल खाने वाली प्रक्रियाओं का चयन कर सकते हैं।
  • ... और मैन पेज पर सूचीबद्ध विभिन्न अन्य ...

आइए जानें कि प्रत्येक प्रक्रिया किस पैकेज पर है (उपयुक्त सिस्टम पर):

$ dpkg -S "$(which pidof)"
sysvinit-utils: /bin/pidof

$ dpkg -S "$(which pgrep)"
procps: /usr/bin/pgrep
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.