जटिल प्रक्रिया नामों के लिए pgrep / pidof उपयोग?


11

मैं अपने सिस्टम में एक प्रक्रिया में HUP भेजने में सक्षम होने के लिए pidof या pgrep का उपयोग करने की कोशिश कर रहा हूं। समस्या यह है कि मैं केवल एक सटीक पैरामीटर के साथ प्रक्रिया को मारना चाहता हूं।

यह 'ps awx' का आउटपुट है

  657 ?        S      0:00 processname software
  658 ?        S      0:00 processname demo
  659 ?        S      0:00 processname test

इनमें से एक करके:

pidof processname 
pgrep processname

आपको प्रक्रिया नाम से शुरू होने वाली सभी प्रक्रियाओं की सूची मिलती है, लेकिन मैं कुछ ऐसा करना चाहूंगा:

pidof processname test
pgrep processname test

केवल पीआईडी ​​प्राप्त करने के लिए मुझे ज़रूरत है (इस उदाहरण में 659 होगी)

अपडेट करें

Pgrep पर -f के झंडे का उपयोग करके मैं वही करता हूँ जो मैं चाहता था, करके:

pgrep -f "processname test"

आपको सही उत्तर मिलेगा।


सही, आपको आम तौर पर आवश्यकता होती है -fक्योंकि आप पूर्ण कमांड लाइन पर मैच करना चाहते हैं। ध्यान दें कि pgrep नियमित अभिव्यक्तियों पर काम करता है, इसलिए आप अपेक्षाकृत जटिल मिलान भी कर सकते हैं।
cjc

जवाबों:


10
$ ps aux |grep [d]evio
user01   10220  0.0  0.1   5376  2424 pts/5    S+   11:41   0:00 ssh devio
$ pgrep -f "ssh devio"
10220
$ pkill -0 -f "ssh devio" ; echo $?
0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.