ज़ोंबी प्रक्रिया क्या हैं?


138

जैसे आदेश topऔर गुई आधारित System Monitorमैं देख सकता हूं कि इस समय मेरे पास कई ज़ोंबी प्रक्रियाएं हैं।

ज़ोंबी प्रक्रिया क्या हैं?

क्या वे सिस्टम के प्रदर्शन या उस एप्लिकेशन को प्रभावित करते हैं जिसके लिए वे ज़ोंबी हैं। क्या वे बहुत अधिक मेमोरी या किसी भी मेमोरी का उपयोग करते हैं?


39
वे प्रक्रियाएं हैं जो आपके सीपीयू को खाना चाहते हैं;)
लुइस अल्वारैडो

8
दोपहर के भोजन के लिए ... :)
RolandiXor

3
ये प्रक्रियाएँ मृत हैं लेकिन दफन नहीं हैं।
प्रेटेक जोशी

2
मेरे सीपीयू खाओ ?! यह वास्तव में भयानक है!
होवार्ड गीथस

जवाबों:


162

लाश DEAD प्रक्रियाएं हैं। वे 'मार नहीं सकते' (आप डीआईएडी को नहीं मार सकते)। सभी प्रक्रियाएं अंततः मर जाती हैं, और जब वे करते हैं तो वे लाश बन जाते हैं। वे लगभग कोई संसाधनों का उपभोग नहीं करते हैं, जो कि उम्मीद है कि क्योंकि वे मर चुके हैं! लाश का कारण इतना है कि ज़ोंबी के माता-पिता (प्रक्रिया) ज़ोंबी के बाहर निकलने की स्थिति और संसाधन उपयोग के आंकड़ों को पुनः प्राप्त कर सकते हैं। अभिभावक ऑपरेटिंग सिस्टम को संकेत देता है कि उसे अब वेट () सिस्टम कॉल का उपयोग करके ज़ोंबी की आवश्यकता नहीं है।

जब एक प्रक्रिया मर जाती है, तो उसका बच्चा सभी प्रक्रिया नंबर 1 के बच्चे बन जाते हैं, जो कि इनिट प्रक्रिया है। Init `` हमेशा '' बच्चों के मरने की प्रतीक्षा करता है, ताकि वे लाश के रूप में न रहें।

यदि आपके पास ज़ोंबी प्रक्रिया है, तो इसका मतलब है कि उन लाशों का उनके माता-पिता द्वारा इंतजार नहीं किया गया है (पीपीपी द्वारा प्रदर्शित ps -l) देखें। आपके पास तीन विकल्प हैं: मूल प्रक्रिया को ठीक करें (इसे प्रतीक्षा करें); माता-पिता को मार डालो; या इसके साथ रहते हैं। याद रखें कि इसके साथ रहना इतना कठिन नहीं है क्योंकि पीएस के आउटपुट में लाश एक से अधिक अतिरिक्त लाइन लेती है।

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

एक सिस्टम से लाश निकालने के लिए, SIGCHLD सिग्नल को पेरेंट को किल कमांड का उपयोग करके मैन्युअल रूप से भेजा जा सकता है। यदि अभिभावक प्रक्रिया अभी भी ज़ोंबी को वापस लेने से इनकार करती है, तो अगला कदम मूल प्रक्रिया को हटाना होगा। जब कोई प्रक्रिया अपने माता-पिता को खो देती है, तो init उसका नया अभिभावक बन जाता है। Init समय-समय पर माता-पिता के रूप में init के साथ किसी भी लाश को निकालने के लिए प्रतीक्षा प्रणाली कॉल को निष्पादित करता है।

अनाथ प्रक्रियाएं भी हैं जो एक कंप्यूटर प्रक्रिया है जिसकी मूल प्रक्रिया समाप्त या समाप्त हो गई है।

दूरस्थ मंगलाचरण के दौरान एक प्रक्रिया अनाथ हो सकती है जब क्लाइंट प्रक्रिया सर्वर का अनुरोध करने के बाद क्रैश हो जाती है।

अनाथ सर्वर के संसाधनों को बर्बाद कर सकते हैं और संभावित रूप से एक सर्वर को मुसीबत में छोड़ सकते हैं (यह लाश और अनाथों के बीच सबसे बड़ा संसाधन अंतर है (सिवाय अगर आप कुछ अनाथ ज़ोंबी फिल्म देखते हैं)। हालांकि, अनाथ प्रक्रिया समस्या के कई समाधान हैं:

  1. तबाही सबसे अधिक इस्तेमाल की जाने वाली तकनीक है; इस मामले में अनाथ प्रक्रिया को मार दिया जाता है।

  2. पुनर्जन्म एक ऐसी तकनीक है जिसमें मशीनें समय-समय पर किसी दूरस्थ कम्प्यूटेशन के माता-पिता का पता लगाने की कोशिश करती हैं; जिस बिंदु पर अनाथ प्रक्रियाओं को मार दिया जाता है।

  3. समाप्ति एक ऐसी तकनीक है जहां प्रत्येक प्रक्रिया को मारे जाने से पहले समाप्त करने के लिए एक निश्चित समय आवंटित किया जाता है। यदि आवश्यकता हो तो एक प्रक्रिया आवंटित समय समाप्त होने से पहले समाप्त होने के लिए अधिक समय के लिए "पूछ" सकती है।

एक प्रक्रिया भी उसी मशीन पर चल सकती है, जो उसकी मूल प्रक्रिया है। UNIX जैसी ऑपरेटिंग सिस्टम में किसी भी अनाथ प्रक्रिया को विशेष "init" सिस्टम प्रक्रिया द्वारा तुरंत अपनाया जाएगा। इस ऑपरेशन को री-पैरेंटिंग कहा जाता है और स्वचालित रूप से होता है। भले ही तकनीकी रूप से इस प्रक्रिया में "मूल" प्रक्रिया अपने माता-पिता के रूप में है, फिर भी इसे प्रक्रिया के बाद से एक अनाथ प्रक्रिया कहा जाता है, जिसने मूल रूप से इसे बनाया था अब मौजूद नहीं है।

और जानकारी:

http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process#ixzz1PCN9vojU

http://www.linuxsa.org.au/tips/zombies.html

http://www.brighthub.com/computing/linux/articles/79186.aspx

उपयोगकर्ता इनपुट पर सिस्टम धीरे-धीरे हैंग होने और प्रतिक्रिया करने पर हैंगिंग प्रोसेस को कैसे पहचानें और कैसे मारें?

एक उबंटू मशीन में चल रही प्रक्रिया को दूर से एक विंडोज़ मशीन से मारना जो लैन में है


18
Ekhm! आप मृतकों को मार सकते हैं! आपको सिर्फ सिर के लिए निशाना लगाना है। या वे हर समय हमसे झूठ बोलते रहे हैं?
मारकिन कमिंसकी

1
initwaitअपने सभी बच्चे प्रक्रियाओं पर कॉल यह हो सकता है, ज़ोंबी, अनाथ (अपनाया) और जैविक (स्व-प्रायोजित)?
ब्लीडिंग फिंगर्स

1
एसीसी। प्रथम विश्व युद्ध के लिए छलावरण का उपयोग करें: P
عانمان

कृपया @MarcinK विटामिनस्की को एक पदक दें!
एंड्रिया

20

ज़ोंबी प्रक्रियाएं (जैसा भी दिखा <defunct>), वास्तविक प्रक्रियाएं बिल्कुल नहीं हैं। वे कर्नेल प्रक्रिया तालिका में सिर्फ प्रविष्टियाँ हैं। यह एकमात्र संसाधन है जिसका वे उपभोग करते हैं। वे किसी भी सीपीयू या रैम का उपभोग नहीं करते हैं। लाश होने का एकमात्र खतरा, प्रक्रिया तालिका में अंतरिक्ष से बाहर चल रहा है (आप यह cat /proc/sys/kernel/threads-maxदेखने के लिए उपयोग कर सकते हैं कि आपके सिस्टम पर कितनी प्रविष्टियों की अनुमति है)।

वे केवल तभी प्रकट होते हैं जब उनकी मूल प्रक्रिया (अर्थात वह प्रक्रिया जो fork()'edउन्हें जीवित होती है), लेकिन wait()सिस्टम फ़ंक्शन को कॉल नहीं किया । एक बार माता-पिता मर जाता है, लाश हैं wait()'edद्वारा के लिए initऔर गायब हो जाते हैं।


4
topमें `स्क्रीनशॉट इस सवाल आप खंडन करने के लिए लगता है? वहां, ज़ोंबी 100% 1 सीपीयू का उपयोग करता दिखाई देता है, लेकिन कोई मेमोरी नहीं।
टॉर्बन गुंडोफ्ट-ब्रून जूल

7

जब एक child processशब्द समाप्त हो जाता है, तो इसकी मृत्यु का उसके माता-पिता को सूचित किया जाता है ताकि माता-पिता कुछ उचित कार्रवाई कर सकें।

एक processजो अपने माता-पिता के लिए अपने रिटर्न कोड को स्वीकार करने के लिए इंतजार कर रहा है उसे एक ज़ोंबी प्रक्रिया कहा जाता है ।

वे completed their execution, लेकिन अभी भी एक है entryमें process table


1

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

लंबे समय तक जीवित ज़ोंबी प्रक्रिया तब होती है जब माता-पिता की प्रक्रिया बच्चे की प्रक्रिया समाप्त होने के बाद प्रतीक्षा सिसकल को कॉल नहीं करती है। एक स्थिति जहां ऐसा होता है जब मूल प्रक्रिया खराब लिखी जाती है और बस प्रतीक्षा कॉल को छोड़ देता है या जब माता-पिता की प्रक्रिया बच्चे से पहले मर जाती है और नई माता-पिता प्रक्रिया उस पर प्रतीक्षा नहीं कहती है। जब एक प्रक्रिया 'अभिभावक के बच्चे के सामने मर जाती है, तो OS बच्चे को "init" प्रक्रिया या PID 1 को सौंप देता है। अर्थात init प्रक्रिया बच्चे की प्रक्रिया को "अपनाती है" और उसका माता-पिता बन जाती है। इसका मतलब यह है कि अब जब बच्चे की प्रक्रिया नए माता-पिता (init) से बाहर निकलती है, तो उसे वेट्टो को अपना एक्जिट कोड प्राप्त करना चाहिए या उसकी प्रक्रिया तालिका प्रविष्टि हमेशा के लिए बनी रहती है और यह एक ज़ोंबी बन जाता है

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