जवाबों:
कार्यक्रम 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
फॉक्स ने उल्लेख किया है कि pgrep
खोज नियमित अभिव्यक्ति का उपयोग करते हुए pidof
होती है , जबकि ऐसा नहीं है।
लेकिन इसके pgrep
अलावा भी बहुत सारे विकल्प उपलब्ध हैं:
-u "$UID"
आप वर्तमान उपयोगकर्ता से संबंधित केवल प्रक्रियाओं से मेल कर सकते हैं।--parent
आप किसी दिए गए प्रक्रिया के बच्चे प्रक्रियाओं पा सकते हैं।--oldest
या --newest
मेल खाने वाली प्रक्रियाओं का चयन कर सकते हैं।आइए जानें कि प्रत्येक प्रक्रिया किस पैकेज पर है (उपयुक्त सिस्टम पर):
$ dpkg -S "$(which pidof)"
sysvinit-utils: /bin/pidof
$ dpkg -S "$(which pgrep)"
procps: /usr/bin/pgrep