2012-01-24 7 views
381

मैं सभी प्रक्रियाओं है कि मैं द्वारा प्राप्त मारने के लिए चाहते हैं:किसी दिए गए आंशिक नाम के साथ सभी प्रक्रियाओं को कैसे मारें?

ps aux | grep my_pattern 

यह कैसे करना है?

यह काम नहीं करता:

pkill my_pattern 
+4

'बस नाम की सबस्ट्रिंग my_pattern' है, या यह किसी भी regex विशेष वर्ण करता है? –

उत्तर

846

उपयोग pkill -f, जो कमांड लाइन

pkill -f my_pattern 
+3

+1। पीकेआईएल बहुत उपयोगी है – Jayan

+4

@ जयान: यह भी अपनी हत्या में काफी अंधाधुंध है। यह आश्चर्यजनक रूप से मिशनल के लिए आसान है ... – thkala

+5

@thkala: -x विकल्प वास्तविक इनपुट से मेल खाना चाहते हैं तो मदद करनी चाहिए .. – Jayan

46

के किसी भी हिस्से के लिए नमूने का मिलान आपके द्वारा चयन प्रक्रियाओं का उपयोग

में और अधिक लचीलापन की जरूरत है
for KILLPID in `ps ax | grep 'my_pattern' | awk ' { print $1;}'`; do 
    kill -9 $KILLPID; 
done 

आप grep -e आदि का उपयोग कर सकते हैं

+2

-1 आपको लूप की आवश्यकता नहीं है, आप केवल' kill -9 \ 'ps ax | awk '[m] y_pattern {प्रिंट $ 1}' \ '' (रीफैक्टरिंग भी नोट करें; @ सिंथेसाइज़रपटल के उत्तर पर भी मेरी टिप्पणी देखें)। – tripleee

+8

@ ट्रिपली आपके डाउनवोट के साथ कोई समस्या नहीं है, लेकिन आप ** ** महसूस करते हैं कि ओक्यू * "मैं उन सभी प्रक्रियाओं को मारना चाहता हूं जो मुझे मिलती हैं: ps aux | grep my_pattern" *, जिसे मैंने कर्तव्यपूर्वक स्वीकार किया। –

+0

किल एक ही समय में सभी प्रक्रियाओं को मार देगा, आपको इसके लिए लूप की आवश्यकता नहीं है। यदि 'ps' तीन प्रक्रियाओं 123, 234, और 345 देता है, तो आप' 123 234 345 'को मार सकते हैं जैसे कि आप' rm' या 'cat' एकाधिक फ़ाइल तर्क कर सकते हैं। – tripleee

79

को मार डालो सभी प्रक्रियाओं स्ट्रिंग "myProcessName" मिलान:

एक लाइनर:

ps -ef | grep myProcessName | grep -v grep | awk '{print $2}' | xargs kill -9 

स्रोत: http://www.commandlinefu.com/commands/view/1138/ps-ef-grep-process-grep-v-grep-awk-print-2-xargs-kill-9

+14

हटा देगा यदि नाम से मेल खाने वाली कोई प्रक्रिया नहीं मिलती है तो यह एक त्रुटि फेंक देगा। आप 'ps -ef | का उपयोग करना चाह सकते हैं grep myProcessName | grep -v grep | अजीब '{प्रिंट $ 2}' | xargs -r kill -9' को xargs कमांड निष्पादित नहीं करते हैं यदि कोई तर्क नहीं दिया जाता है। – Epigene

+0

बस थोड़ा सा संशोधन, शायद प्रक्रिया का नाम उद्धृत करना बेहतर है: 'ps -ef | grep 'myProcessName' | grep -v grep | अजीब '{प्रिंट $ 2}' | xargs -r kill -9' उद्धरण के बिना, पहली बार मेरी पृष्ठभूमि प्रक्रियाओं में से केवल एक को मार दिया गया था। इसे फिर से चलाकर बाकी को मार डाला। –

12

आप इस प्रक्रिया

ps aux | grep -c myProcessName 
सूची निम्न आदेश का उपयोग कर सकते हैं

यदि आपको टी की गिनती की जांच करने की आवश्यकता है टोपी प्रक्रिया तब चलाने

ps aux | grep -c myProcessName |grep -v grep 

जिसके बाद आप का उपयोग कर

kill -9 $(ps aux | grep -e myProcessName | awk '{ print $2 }') 
+0

आप प्रक्रिया ps aux की सूची के लिए निम्न आदेश का उपयोग कर सकते हैं। grep -c myProcessName यदि आपको उस प्रक्रिया की गिनती की जांच करने की आवश्यकता है तो ps aux चलाएं। ग्रेप -c myProcessName | ग्रेप -v ग्रेप जिसके बाद आप मार -9 $ का उपयोग कर प्रक्रिया को मार सकता है (ps aux | ग्रेप -e myProcessName | awk '{$ 2 प्रिंट}') –

1

बुरा ध्वनि प्रक्रिया को मार सकता है?

pkill `pidof myprocess` 

उदाहरण:

# kill all java processes 
pkill `pidof java` 
5

आप pkill -f PATTERN थोड़ा बहुत खतरनाक न्यायाधीश, मैं ezkill एक bash स्क्रिप्ट है कि आप जो उन है कि पैटर्न आप को मारने के लिए चाहता हूँ से मेल के बीच प्रक्रियाओं का चयन करने का संकेत लिखा था।

-1

आप के लिए निम्न आदेश का उपयोग कर सकते हैं:

ps -ef | grep -i myprocess | awk {'print $2'} | xargs kill -9 

या

ps -aux | grep -i myprocess | awk {'print $2'} | xargs kill -9 

यह मेरे लिए काम करता है।

+1

StackOverflow करने के लिए आपका स्वागत है। कृपया अपनी कोड लाइनों के लिए 4-स्पेस या टैब इंडेंटेशन का उपयोग करें ताकि उन्हें कोड ब्लॉक के रूप में स्वरूपित किया जा सके। सादर – YakovL

1

आप

kill -9 $(ps aux | grep 'process' | grep -v 'grep' | awk '{print $2}') 
4

के लिए निम्न आदेश का उपयोग इसके अलावा, आप killall -r my_pattern उपयोग कर सकते हैं कर सकते हैं। -r एक विस्तारित नियमित अभिव्यक्ति के रूप में प्रक्रिया नाम पैटर्न व्याख्या करें।

killall -r my_pattern 
0

आप, प्रक्रिया आईडी खोजने का सिरदर्द ले नाम से प्रक्रिया को मारने के लिए regexp का उपयोग नहीं करना चाहते हैं। उदाहरण के लिए, कोड के बाद क्रोम को मारने के लिए चाल चल जाएगी।

killall -r --regexp chrome