2011-11-14 7 views
82

मैं डेमॉन प्रक्रिया के पिड को निर्धारित करने के लिए ps -ef | grep "keyword" का उपयोग करना चाहता हूं (इसमें ps -ef के आउटपुट में एक अनूठी स्ट्रिंग है)।ps -ef से gids प्राप्त करना | grep कीवर्ड

मैं pkill keyword के साथ प्रक्रिया को मार सकता हूं क्या कोई आदेश है जो इसे मारने के बजाय पिड देता है? (Pidof या pgrep does not काम)

उत्तर

175

आप pgrep का उपयोग कर सकते हैं जब तक आप -f विकल्प शामिल करते हैं। यह pgrep केवल प्रक्रिया नाम के बजाय पूरे आदेश (तर्क सहित) में मिलान कीवर्ड बनाता है।

pgrep -f keyword 
man page से

:

-f       पैटर्न आम तौर पर केवल प्रक्रिया नाम के खिलाफ मिलान किया जाता है। जब -f सेट किया गया है, तो पूर्ण कमांड लाइन का उपयोग किया जाता है।


तुम सच में pgrep से बचना चाहते हैं, की कोशिश:

ps -ef | awk '/[k]eyword/{print $2}' 

नोट [] कीवर्ड के पहले अक्षर के आसपास। यह awk कमांड से मेल खाने से बचने के लिए एक उपयोगी चाल है।

+1

धन्यवाद :) लिनक्स के लिए थोड़ा नया यह -f काम करता है: पी –

+1

आपका स्वागत है, डेनिस। –

+3

ps अति प्रयोग किया जाता है, और pgrep इतना अंतर्निहित है। पोस्ट के लिए धन्यवाद। –

38

प्रयास करें

ps -ef | grep "KEYWORD" | awk '{print $2}'

कि आदेश उन में कीवर्ड के साथ प्रक्रियाओं के आप पीआईडी ​​देना चाहिए। इस उदाहरण में, awk आउटपुट से दूसरे कॉलम में क्या लौट रहा है।

+1

क्योंकि यह एक से अधिक पिड वापस कर सकता है आप पहले से प्राप्त कर सकते हैं '| सिर -1'। – Kris

8

ps -ef | grep KEYWORD | grep -v grep | awk '{print $2}'

+4

शायद एक टाइपो? पीएस-एफआई | grep कुंजीशब्द | grep -v grep | awk '{print $ 2}' – rmv

+0

क्या आप जानते हैं कि लौटाए गए पीआईडी ​​को "kill -9" में कैसे पास किया जाए? – alybadawy

+0

@alybadawy बस '| जोड़ें अंत में xargs kill -9' – patte8

6

मैं

ps -C "keyword" -o pid= 

इस आदेश का उपयोग आप एक पीआईडी ​​संख्या देना चाहिए कीवर्ड pidof:

संबंधित मुद्दे