शेल स्क्रिप्ट टू -9 मार नाम के आधार पर


28

वहाँ एक तरीका है (शायद एक स्क्रिप्ट) कैसे इस प्रक्रिया को स्वचालित करने के लिए:

petr@sova:~$ ps -ef | grep middleman
petr     18445  2312  1 12:06 pts/2    00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman                                                                  
petr     18581 13621  0 12:08 pts/0    00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445

दुर्भाग्य से, pkillबहुत कमजोर है क्योंकि मुझे -9विकल्प पर जाना है kill


2
आप के -9साथ pkillभी उपयोग कर सकते हैं ...
बंद करो मोनिका

6
मेरी राय में, यह उपयोग करने -KILLसे अधिक सुरुचिपूर्ण और उचित है -9। कार्यान्वयन संख्या पर निर्भर सिग्नल किस संख्या से मेल खाता है। लिनक्स i386 और लिनक्स amd64 पर SIGKILLहोता है 9, लेकिन जरूरी नहीं कि हर जगह हो। ( अधिक जानकारी यहाँ। )
एलियाह कगन

5
@ एलियाकगन: जबकि मुझे -KILLभी उपयोग करना पसंद है (क्योंकि यह कोड को अधिक पठनीय बनाता है), यह ध्यान दिया जाना चाहिए कि SIGKILL = 9यह POSIX द्वारा निर्दिष्ट है , इसलिए -9आजकल बहुत पोर्टेबल है (और यह कर्नेल या आर्किटेक्चर पर निर्भर नहीं करता है)।
एंड्रिया कोरबेलिनी

जवाबों:


36

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

kill -9 $(pidof middleman)

शेल pidof middlemanपहले कमांड को निष्पादित करता है । पिडोफ (8) का आउटपुट प्रोसेस आईडी है। इसलिए शेल pidofप्रक्रिया आईडी के साथ -andand को प्रतिस्थापित करता है और निष्पादित करता है kill -9 18845(या जो भी सही प्रक्रिया आईडी है)।


इसमें और इसमें क्या अंतर है kill -9 $(pgrep middleman)?
हारून फ्रेंके

54

क्यूबी में से एक से भी एक सरल समाधान है: killallचलो नाम से प्रक्रियाओं को मारते हैं, और आप संकेतों को निर्दिष्ट कर सकते हैं।

killall -9 middleman

man killallअधिक जानकारी और अतिरिक्त विकल्पों के लिए देखें (काफी कुछ हैं)।

जैसा कि नाम से पता चलता है, यह नामित सभी प्रक्रियाओं को संकेत भेजता है middleman। लेकिन यह अन्य तरीकों (जैसे pkill) से अलग नहीं है । इसके अलावा, pkill -9 middlemanउन प्रक्रियाओं को लक्षित करेगा जिनके नाम से मेल खाता है लेकिन समान नहीं है middleman, जैसे कि middleman2


2
killallजीत के लिए!
एंड्रिया कोरबेलिनी

4
सभी बिचौलियों को मार डालो? ओह डियर ...
टोबियास किंजलर

16

अन्य उत्तर पूरी तरह से सही हैं, लेकिन मैं एक तीसरा विकल्प भी जोड़ सकता हूं, इसलिए सभी यहां दस्तावेज हैं। आप भी उपयोग कर सकते हैं:

pkill -9 middleman

man pkillअधिक जानकारी और अतिरिक्त विकल्पों के लिए देखें ।

यह वास्तव में मायने नहीं रखता है कि आप इनमें से किस पद्धति का उपयोग करते हैं। वे सब काम करेंगे। लेकिन विकल्पों को जानना अगर उपयोगी है तो आप किसी तरह से व्यवहार को संशोधित करना चाहते हैं, क्योंकि संबंधित मैन पेज दिखाते हैं कि अन्य मिलान विकल्प क्या उपलब्ध हैं।


अजीब बात है, यहाँ काम नहीं करता है। न ही करता हैmiddleman*
mreq

1
आह। अधिक बारीकी से देखने पर, यह संभावना प्रतीत होती है कि आप एक रूबी दुभाषिया को मारना चाहते हैं, बजाय एक प्रक्रिया के जिसे वास्तव में कहा जाता है middleman। यह वह जगह है जहाँ वास्तव pkillमें killall, pidofऔर grepमैच प्रक्रियाओं के अंतर वास्तव में मायने रखने लगते हैं!
रॉबी बसाक

12
pkill -9 -f middleman

-fविकल्प यह केवल प्रक्रिया नाम से पूरा कमांड लाइन से मेल खाते हैं, बल्कि बनाता है।

ध्यान दें कि -9एक अंतिम रिज़ॉर्ट संकेत होना चाहिए, नियमित रूप से उपयोग करने के लिए कुछ नहीं।


1
धन्यवाद! मैं वास्तव में क्षमता से मिलान करने की तरहcomplete command line
CWD

पूरा कमांड लाइन वास्तव में अच्छा है!
okwap

10

बस मनोरंजन के लिए, मैं एक और अधिक मैनुअल, पुराने स्कूल तरीके जोड़ना चाहूंगा

kill -9 `ps aux | grep middleman | awk '{print $2}'`

1
मैंने कुछ साल पहले काम किया था और व्यवस्थापक ने मुझे एक नज़र दिया, जिसमें कहा गया कि "ठीक है, दादा"। जागने से पहले एक grep -v grep भी जोड़ सकते हैं यह सुनिश्चित करने के लिए कि यह grep कमांड को भी नहीं मारता है।
इयान होल्डर

@gerhard, संपादन के लिए धन्यवाद, मेरे iPad पर वापस टिक नहीं पाया। grep -v एक अच्छा विचार है ...
slipset

वास्तविक पुराने स्कूल का तरीका यह होगा कि दुर्घटना ... grep [m]iddleman ...से grepप्रक्रिया को मारने से बचें । इस तरह grep मजाकिया उद्धरण के कारण खुद से मेल नहीं खा सकता है।
मिकको रेंटालिनेन

1
killall -9 -ir regex_pattern

जो इंटरैक्टिव (सुरक्षित) है और आंशिक कमांड नाम से मेल खाता है।

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