एक ज़ोंबी प्रक्रिया क्या है और मैं इसे कैसे मार सकता हूं?


जवाबों:


17

हे भगवान! नहीं नहीं नहीं। किल -9 का उपयोग न करें।

यह प्रक्रिया को सफाई का मौका नहीं देता है:

  1. सॉकेट कनेक्शन बंद करें

  2. अस्थायी फ़ाइलों को साफ करें

  3. अपने बच्चों को सूचित करें कि वह दूर जा रहा है

  4. अपनी टर्मिनल विशेषताओं और इतने पर और इतने पर रीसेट करें।

आम तौर पर, 15 भेजें, और एक या दो सेकंड प्रतीक्षा करें, और यदि वह काम नहीं करता है, तो 2 भेजें, और यदि वह काम नहीं करता है, तो भेजें। 1. यदि ऐसा नहीं है, तो प्रोग्राम को बुरी तरह से बर्खास्त न करें!

किल -9 का उपयोग न करें। बस फूलों के बर्तन को साफ करने के लिए कंबाइन हारवेस्टर बाहर न लाएं।


13
किल -9 लाश को नहीं मारेगा। आपको उनके माता-पिता को मारना होगा, पस्ट्री को देखना होगा।
लैपटॉप 006

3
@ LapTop006: इस मामले में वे पिशाच की तरह अधिक हैं; आक्रमण को रोकने के लिए सिर पिशाच को मार डालो।
एम्फ़ैटेमाचिन

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

19

ज़ोंबी प्रक्रिया (वास्तव में अब उन्हें बुलाया जाता है <defunct>) वास्तव में एक प्रक्रिया नहीं है। यह केवल प्रक्रिया तालिका में प्रविष्टि है, इसलिए मूल प्रक्रिया wait()syscall कर सकती है ।

आपको उनकी चिंता नहीं करनी चाहिए। वे किसी भी संसाधन पर कब्जा नहीं करते हैं, वे या तो गायब हो जाएंगे, जब उनके माता wait()-पिता खुद मर जाएंगे ।


9

यह एक ऐसी प्रक्रिया है जिसे पूरी तरह से निपटाया गया है लेकिन अभी भी प्रक्रिया तालिका में मौजूद है। एक अनाथ प्रक्रिया के साथ इसका विरोध करें, जिनके माता-पिता की मृत्यु हो गई है लेकिन अभी भी चल रही है।

यहां उनसे छुटकारा पाने के बारे में कुछ सलाह दी गई है।


9

पहले से ही एक स्वीकृत उत्तर है, हालांकि: आप ज़ोंबी प्रक्रिया को मार सकते हैं। डिबगर को मूल प्रक्रिया में संलग्न करें और वाट्सएप फ़ंक्शन को कॉल करें। जैसे: - मान लें कि माता-पिता के पास पीआईडी ​​= 100 है, ज़ोंबी प्रक्रिया में पीआईडी ​​= 200 है

$ gdb -p 100
(gdb) call waitpid(200, 0, 0)
(gdb) quit

दिलचस्प। मैं यह कोशिश करूंगा।
ewwhite

8

एक ज़ोंबी प्रक्रिया के पास कोई भी संसाधन नहीं हैं, जो भी हो, प्रक्रिया के पेड़ में प्रवेश के अलावा। यह जब एक प्रक्रिया को पूरा करता है, तथापि माता पिता प्रक्रिया अभी तक नहीं किया गया है होता काटा यह, (यानी, waitइस पर एड)।

आप कोशिश कर सकते हैं और माता-पिता को ऐसा करने के लिए मजबूर कर सकते हैं यदि आप इसे kill -20माता-पिता को SIGCHLD ( ) भेजकर चाहते हैं , लेकिन इस बात की कोई गारंटी नहीं है कि माता-पिता इसका सम्मान करेंगे।

आप अक्सर उन्हें थोड़े समय के लिए देखेंगे (उदाहरण के लिए शीर्ष पेड़ का उपयोग करते समय देखें) - यह सामान्य है; उस समय के दौरान स्लाइस में जो एक बच्चे की प्रक्रिया पूरी हो जाती है, और माता-पिता इसके लिए मतदान करते हैं - बच्चे की प्रक्रिया एक ज़ोंबी के रूप में दिखाई देगी।

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

केवल उसी समय जब आपको ज़ोंबी प्रक्रियाओं से चिंतित होना चाहिए, जब आप बहुत सारे और बहुत सारे देखते हैं, उदाहरण के लिए यदि ऊपर वर्णित वही भद्दा आवेदन लोड के तहत रखा गया है।

हमारे पास बहुत से गंदे डेवलपर्स हैं जहां मैं काम करता हूं, और इसलिए मुझे ऐसे मुद्दों से निपटने और ऐसा करते समय सभी प्रकार के बेकार सामान को सीखने का विशेषाधिकार है। वास्तव में - मेरी टीम अक्सर साक्षात्कारों में भद्दा डेवलपर्स द्वारा लिखी गई भद्दी खोल स्क्रिप्ट का उपयोग करने का संकल्प करती है - यदि उम्मीदवार यह चुन सकता है कि स्क्रिप्ट वास्तव में बकवास है, और हमें बताएं कि यह भद्दा क्यों है, तो उसके पास दरवाजे में एक अच्छा पैर है।


0

आभासी बन्दूक के रूप में ...

$ शूट <pid>
#! / Bin / श
पीड़ित = `ps -e -o pid, ppid | egrep "^ \ s * $ 1 \ b" | awk '{प्रिंट $ 2}' `
पीड़ित \ _नाम = `ps -e -o pid, cmd | egrep "^ \ s * $ {पीड़ित} \ b" | सिर-एन १ | awk '{प्रिंट $ 2}' '
# $ $ {शिकार}
इको "$ {पीड़ित_नाम} को मार डाला।"

और याद रखें: हमेशा उन्हें सिर में गोली मारें।


मुझे खेद है, लेकिन रिकॉर्ड के लिए, इस स्क्रिप्ट में टाइपो "पीड़ित_नाम" है और $ 1 पर दिए गए पीआईडी ​​के माता-पिता को मारने जा रहा है, किसी भी मामले में यह विचार करता है कि क्या पीआईडी ​​एकमात्र ज़ोंबी है या यदि उसके कुछ भाई-बहन हैं, तो बस पिता को मार देता है और इसके साथ सभी परिवार नष्ट हो जाएगा।
मार्क रीरा

-1

एक ज़ोंबी प्रक्रिया एक ऐसी प्रक्रिया है जिसे निष्पादित करना समाप्त हो गया है, लेकिन अभी भी प्रक्रिया तालिका में सूचीबद्ध है।

मार -9 [अभिभावक process_name] इसे नीचे रखा जाएगा, अत्यधिक पूर्वाग्रह के साथ।


किल -9 एक ज़ोंबी प्रक्रिया को नहीं मारेगा - यही एक कारण है कि उन्हें लाश कहा जाता है। एक ज़ोंबी "प्रक्रिया" तब तक दूर नहीं जाएगी जब तक कि उसका रिटर्न कोड एक मूल प्रक्रिया से वापस नहीं मिल जाता।
मेई

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