आप लिनक्स में एक प्रक्रिया पेड़ को कैसे मारते हैं? [बन्द है]


14

कभी-कभी, SIGTERM को एक प्रक्रिया में भेजने से यह SIGTERM को उसकी सभी बाल प्रक्रियाओं में भेजने का कारण होगा। हालांकि, कभी-कभी यह काम नहीं करता है।

क्या कोई कमांड या उपयोगिता है जो मुझे एक ही समय में एक प्रक्रिया और उसके सभी बच्चे की प्रक्रिया को मारने की अनुमति देगा? मैं आमतौर पर मैन्युअल रूप से सभी किल को एक किल कमांड में इकट्ठा करने का सहारा लेता हूं, लेकिन यह बेवकूफ लगता है।

यह एसओ सवाल पूछता है कि यह कैसे करना है।


जैसा दिखता है pkill -9, उससे अधिक शक्तिशाली है pkill, जो भी कारण हो।
एंड्रयू

जवाबों:



13

यह मानते हुए कि प्रक्रियाएं एक सत्र पहचानकर्ता को साझा करती हैं (जो उन्हें तब तक होनी चाहिए जब तक कि उन्हें स्पष्ट रूप से सेटिड्स () नहीं कहा जाता है, आप उन्हें pkill का उपयोग करके सत्र द्वारा मार सकते हैं:

user@machine:~> ps -o pid,sess,cmd -U user
  PID  SESS CMD
12804 12804 -bash
12916 12804 ps -o pid,sess,cmd -U user
user@machine:~> sh
sh-3.00$ sh
sh-3.00$ sh
sh-3.00$ sh
sh-3.00$ sh
sh-3.00$ sh
sh-3.00$ ps -o pid,sess,cmd -U user
  PID  SESS CMD
12804 12804 -bash
12920 12804 sh
12921 12804 sh
12922 12804 sh
12924 12804 sh
12926 12804 sh
12928 12804 sh
12937 12804 ps -o pid,sess,cmd -U user
sh-3.00$

अगर दूसरे टर्मिनल से मैं करूँ:

pkill -9 -s 12804

फिर सब कुछ एक में झड़ गया।

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


2

आमतौर पर, एक जवाब देने वाले क्लाइंट को एक सिग्मेंट प्राप्त करना चाहिए और खुद को बंद करना चाहिए, जिससे उसके सभी कांटेदार बाल प्रक्रियाएं समाप्त हो जाएं। यदि, दूसरी तरफ, ग्राहक प्रतिक्रिया नहीं दे रहा है, तो एक सामान्य समाप्ति संकेत संभवतः कोई प्रतिक्रिया नहीं देगा।

तो आप तब एक SIGKILL भेजते हैं, जो सिस्टम को खुद को मेक दैट प्रोसेस स्टॉप, नाउ - को बताता है - जिसे वह ज्यादातर समय कर सकता है, सिवाय तब जब यह प्रक्रिया अविभाज्य नींद की स्थिति में हो, जैसे कुछ I / O का इंतजार करना इनपुट या समान।

उस मामले में, यहां तक ​​कि SIGKILL भी इस प्रक्रिया के लिए कुछ भी नहीं करेगा; बाल प्रक्रिया संभवतः मंदता की एक समान स्थिति में होगी।

एक बॉर्डर केस है जहां मूल प्रक्रिया सिर्फ अच्छी तरह से समाप्त हो सकती है, लेकिन बच्चे की प्रक्रिया हत्या योग्य नहीं है। फिर आप एक ज़ोंबी प्रक्रिया के साथ समाप्त हो जाएंगे जिसे उसके पिता के चले जाने के बाद साफ नहीं किया जा सकता है, लेकिन यह कुछ भी जवाब नहीं दे रहा है। उन से छुटकारा पाने का एकमात्र तरीका एक रिबूट है; ज्यादातर मामलों में, हालांकि, वे काफी हानिरहित हैं, केवल एक चीज के रूप में वे एक पीआईडी ​​लेते हैं जबकि जो भी सॉकेट वे उपयोग करने की कोशिश करते हैं वह पहले ही दूर हो गया है।


2

अगर मैं फ़ायरफ़ॉक्स के प्रोसेस ट्री को मारना चाहता हूं, तो क्या इसे उपरोक्त कमांड "pkill -9-to-firefox" द्वारा मारना संभव है

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