2009-09-29 14 views
21

मेरे सहयोगी में से एक ने आज सुबह मुझे बताया, जब उसने "हत्या -9" द्वारा supervisord को मार दिया, पर्यवेक्षकों के उपप्रोसेसर मारे नहीं गए।जब "हत्या -9" द्वारा माता-पिता की प्रक्रिया को मार दिया जाता है, तो क्या उपप्रजाति भी मारे जायेगी?

वह इसके बारे में काफी यकीन है, लेकिन मैंने कई बार कोशिश की और ऐसा नहीं हुआ।

तो जब "हत्या -9" द्वारा माता-पिता की प्रक्रिया को मार दिया जाता है, तो लिनक्स यह सुनिश्चित करेगा कि उप-प्रक्रियाओं को भी मार दिया जाए?

उत्तर

16

पिता को मारने (या मरने) के दौरान उन्हें मारने के लिए आपको उप प्रक्रियाओं को डिमनिक बनाना होगा, अन्यथा उन्हें init (1) द्वारा अपनाया जाता है।

+1

यहां एक लिंक है यदि आप रुचि रखते हैं और आपके सिस्टम के लिए उन्हें कैसे प्रबंधित किया जाता है, इसका प्रयोग करने के लिए ज़ोंबी प्रक्रिया बनाने के लिए: http://www.unix.com/unix-dummies-questions-answers/100737-how- do-you-create-zombie-process.html – Klathzazt

+4

डेमोनिक, पिता, माता-पिता, बच्चे, और ज़ोंबी प्रक्रियाएं। कंप्यूटर ऐसी मजेदार और सनकी कहानी बताते हैं। – jwarner112

23

नहीं, माता-पिता की हत्या होने पर बाल प्रक्रियाओं को जरूरी नहीं माना जाता है।

हालांकि, अगर बच्चे के पास एक पाइप खुलती है जिसे वह लिख रहा है और माता-पिता पढ़ रहा है, तो यह पाइप पर लिखने की कोशिश करते समय एक सिगिप प्राप्त करेगा, जिसके लिए इसे डिफ़ॉल्ट कार्रवाई करना है। यह अक्सर अभ्यास में होता है।

8

यूनिक्स पर, माता-पिता और बाल प्रक्रिया के जीवनकाल के बीच कोई लागू संबंध नहीं है। कड़ाई से बोलते हुए, प्रक्रिया केवल तभी समाप्त हो जाएगी जब वे बाहर निकलें() या एक अनचाहे सिग्नल प्राप्त करें जिसके लिए डिफ़ॉल्ट कार्रवाई समाप्त होनी चाहिए।

हालांकि, एक पूरी "अग्रभूमि प्रक्रिया समूह" एक "को नियंत्रित करने के लिए टर्मिनल" में SIGINT और SIGQUIT जैसे संकेतों को जब उपयोगकर्ता Ctrl-C हिट, आदि कि टर्मिनल पर प्राप्त कर सकते हैं, Ctrl- \। विशिष्ट व्यवहार आंशिक रूप से लॉगिन खोल द्वारा लागू किया जाता है (tty ड्राइवर से सहायता के साथ)। विवरण काफी जटिल हो सकता है: here और here

-9

आपको केवल यह जानने की आवश्यकता है कि आप कौन सी प्रक्रिया या सेवा को मारना चाहते हैं। मेरे मामले में httpd है।

killall -9 httpd 

यह httpd की सभी बाल प्रक्रियाओं को मार देगा।

+0

पूरी तरह से प्रश्न के बिंदु को याद किया। –

+0

यह पोस्ट उस प्रश्न का उत्तर नहीं देता है जो उत्पन्न हुआ था, और चूंकि अन्य उत्तर करते हैं, तो आप इस पोस्ट को हटाना चाहेंगे। –

-1

यदि आप टर्मिनल पिड बंद करते हैं जो प्रक्रिया की मूल प्रक्रिया आईडी है तो टर्मिनल बंद है। और जब टर्मिनल बंद हो जाता है तो इसकी सभी प्रक्रियाएं भी मारे जाती हैं। लेकिन यदि आप खोल में एक उप खोल बनाते हैं तो यदि आप कोई प्रक्रिया बनाते हैं और उस प्रक्रिया के पीपीआईडी ​​को मार देते हैं तो केवल उस सब शैल को मार डालें और उनका बच्चा अनाथ बन जाए। उनके माता-पिता init और pid बन जाता है 1.

[trainee @ SIPL ~] $ ps -ef | grep नींद प्रशिक्षु 38 9 3 3870 0 10:55 अंक/1 00:00:00 नींद 4000 प्रशिक्षु 3895 3788 0 10:55 अंक/0 00:00:00 grep --color = auto sleep [trainee @ SIPL ~] $ kill - 9 3870 [प्रशिक्षु @ एसआईपीएल ~] $ ps -ef | grep नींद प्रशिक्षु 38 9 3 1 0 10:55 अंक/1 00:00:00 नींद 4000 प्रशिक्षु 3906 3788 0 10:55 अंक/0 00:00:00 grep --color = ऑटो नींद

संबंधित मुद्दे

 संबंधित मुद्दे