Ps -ef से ग्रिड प्राप्त करना | grep कीवर्ड


111

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

मैं इस प्रक्रिया को मार सकता हूं pkill keywordक्या कोई आदेश है जो इसे मारने के बजाय पीआईडी ​​लौटाता है? (pidof या pgrep काम नहीं करता है)

जवाबों:


231

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

pgrep -f keyword

से आदमी पेज :

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


यदि आप वास्तव में pgrep से बचना चाहते हैं, तो कोशिश करें:

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

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


3
पीएस overused है, और pgrep तो underused है। पोस्ट के लिए धन्यवाद।
फेलिप अल्वारेज़

6
मारने के लिए आउटपुट पास करने का एक तरीका है: kill -9 `pgrep -f keyword`
क्रिश

यह उत्तर सबसे अच्छा है। तो ज्यादा समय के साथ मैं बर्बाद किया हैps aux | grep chrome
ब्रैंडन

[k]पर चाल का उपयोग करना पड़ा pgrep -f। मेरी स्क्रिप्ट एक उपधारा में चल रही थी, इसलिए मुझे लगता है कि यह अपने मूल कमांड को उठा रहा था (यह सुनिश्चित करने के लिए पता करने के लिए कठिन है - जब यह कमांड निष्पादित किया गया था तो यह वापस आ गया था!)
आर्टऑफवर्फ

2
इस उपयोग के मामले के लिए @ क्रिस सिर्फ उपयोग करने के लिए अधिक सीधा नहीं होगा pkill -9 -f keyword?
oidualc

53

प्रयत्न

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

उस कमांड को आपको उनमें KEYWORD की प्रक्रियाओं की PID देनी चाहिए। इस उदाहरण में, awkआउटपुट से 2nd कॉलम में जो है वह वापस आ रहा है।


2
क्योंकि यह एक से अधिक pid लौटा सकता है जिसे आप जोड़कर पहला प्राप्त कर सकते हैं | head -1
क्रिश

'हेड -1' कुछ लिनक्स में grep PID लौटाएगा, टेल -1 होना चाहिए।
जोआओ विटोरिनो 12

22

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


4
शायद एक टाइपो? ps -ef | grep KEYWORD | grep -v grep | awk '{प्रिंट $ 2}'
rmv

क्या आप जानते हैं कि पीआईडी ​​को "किल -9" में कैसे पारित किया जाता है!
alybadawy

3
@alybadawy बस | xargs kill -9अंत में जोड़
patte

8

मैं उपयोग करता हूं

ps -C "keyword" -o pid=

यह कमांड आपको एक पीआईडी ​​नंबर देना चाहिए।



3

किसी विशिष्ट कीवर्ड द्वारा एक प्रक्रिया को मारने के लिए आप ~/.bashrc(linux) या ~/.bash_profile(mac) में एक उपनाम बना सकते हैं ।

alias killps="kill -9 `ps -ef | grep '[k]eyword' | awk '{print $2}'`"

उत्तम! | head -1यह सब अच्छा और साफ अप wraps के अंत में एक पाइप जोड़ना ।
रस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.