एकल कमांड के साथ प्रक्रिया को कैसे मारें?


18

मैं एक कदम में आईडी खोजने के बाद, एक प्रक्रिया को मारना चाहता हूं।

मैं वर्तमान में इन दो आदेशों का उपयोग करता हूं:

pidof <name>
kill <#number_which_is_result_of_command>

मैं इसे करने के लिए एक ही कमांड कैसे लिख सकता हूं?


क्या खोल? bash? tcsh? ...?
लेवोन

2
आप अपने शेल के दस्तावेज़ में कमांड प्रतिस्थापन के लिए देख सकते हैं ।
deviantkarot

2
मैं नेत्रहीन चीजों का उपयोग करके मारता हूं: एक्सकिल। टर्मिनल में केवल xkill टाइप करें, कर्सर को आपत्तिजनक ऐप पर ले जाएं और बटन दबाएं। केवल

1
@arochester जो काम करता है, लेकिन GUI वातावरण तक ही सीमित है, killविभिन्न प्रकार के कमांड कंसोल से काम करेंगे (प्लस स्क्रिप्ट आदि में स्वचालित हो सकते हैं)। फिर भी लोगों को xkillविकल्प के बारे में सुनिश्चित करने के लिए अच्छा है।
लेवोन

यदि नीचे दिए गए उत्तरों में से एक में आपकी समस्या हल हो गई है, तो कृपया उत्तर के आगे चेकमार्क पर क्लिक करके इसे स्वीकार करने पर विचार करें । यह कुछ सुधारों के साथ दोनों पक्षों को पुरस्कृत करेगा और हल के रूप में इस समस्या को चिह्नित करेगा।
लेवोन

जवाबों:


18

आप नाम से भी प्रक्रियाओं को मार सकते हैं:

उदाहरण:

pkill vim  # kill all processes containing vim in the process name

@Levon क्या आपको यकीन है? संकेत: यह काम करेगा अगर आप को बदलने pkillके लिए kill?
मिकेल

यह काम नहीं करेगा, लेवोन। किल -9 इस प्रक्रिया को उसके PID द्वारा मारता है और pkill -9 अपने नाम से प्रक्रिया को मारता है।
13

6
बिना -oया -n, केवल एक ही नहीं, सभी मिलान प्रक्रियाओं pkillको भी मारता है ।
मिकेल

3
-1 SIGKILL (-9) का उपयोग करने के सुझाव के लिए, जो कि खराब प्रक्रिया पारिस्थितिकी है। SIGKILL के साथ, प्रक्रिया के भीतर डेटा प्रवाहित नहीं किया जाता है, जिससे संभव डेटा भ्रष्टाचार होता है।
Arcege

6
सुझाव देना killallबहुत बुरा सलाह है। यह बहुत अलग चीजें करता है जिसके आधार पर यूनिक्स / लिनक्स आप पर हैं।
मिकीबी

13

अपने सेट के आदेशों के साथ अपने विशिष्ट प्रश्न का उत्तर देने के लिए, उपयोग करें:

kill `pidof <name>`

चूंकि pidof <name>आप आपको उस प्रक्रिया की पीआईडी ​​देते हैं जिसे आप मारने की कोशिश कर रहे हैं, आप इसे कमांड लाइन स्विच जैसे -9आदि के साथ भी उपयोग कर सकते हैं ।

के साथ परीक्षण किया bashऔर tcsh


9
BTW, kill $(pidof <name>)अधिक संगत (POSIX) है और इसका उपयोग किसी अन्य कमांड प्रतिस्थापन ब्लॉक के अंदर किया जा सकता है ।
रुडोल्फ एडमकोविक

@RudolfAdamkovic मैं सहमत हूं, यह लिपियों में सुनिश्चित करने के लिए एक बेहतर विकल्प है। हालाँकि एक त्वरित टाइप की गई कमांड के लिए मुझे बैकटिक्स का उपयोग आसान लगता है .. साथ ही यह दोनों सामान्य गोले (bash और tcsh) के साथ काम करता है .. मुझे $tsh के साथ काम करने के लिए संस्करण नहीं मिला ।
लेवॉन

बस इसके साथ कोशिश की tcshऔर आप सही हैं। नहीं पता था कि जानकारी के लिए धन्यवाद!
रुडोल्फ एडमकोविक

7

लेवोन पर एक टिप्पणी होनी चाहिए, लेकिन मुझे ऐसा करने के लिए यहां प्रतिनिधि की कमी है:

इस प्रश्न के स्वीकृत उत्तर में चर्चा पर चर्चा: /server/397762/how-to-make-folders-00-99-with-a-single-command-in-ubuntu

मैं कहूंगा कि इसे चलाने के लिए बेहतर (या कम से कम उपयोगी / बाद के खोजकर्ताओं के लिए स्पष्ट) हो सकता है

kill $(pidof <name>)

$ () बनाम ``: http://mywiki.wooledge.org/BashFAQ/082 पर आगे संदर्भ


विशेष रूप से नीचे के लिंक को शामिल करने के लिए +1। मुझे @RudolfAdamkovic से इसी तरह की टिप्पणी मिली, उसका जवाब देखिए। क्या आप इसका एक संस्करण जानते हैं जो tcsh के साथ काम करता है? (मुझे अभी भी शेल में एक त्वरित कमांड पर टाइप करना आसान लगता है :)
लेवोन

मैंने केवल bash (Linux पर) और ksh (HP-UX पर) काम किया है; अभी तक tcsh के साथ पथ को पार नहीं किया है, क्षमा करें।
गिली धू

1

आप killallविशेष प्रक्रिया को मारने के लिए कमांड का उपयोग भी कर सकते हैं ।

killall vim
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.