से एक प्रविष्टि पढ़ना इलाव मुझे याद आया कि एक मंच में किसी ने मदद मांगी थी क्योंकि उनकी प्रणाली धीमी थी, कुछ समाधान प्रक्रियाओं पर केंद्रित थे।
लिनक्स में प्रक्रियाओं के मुख्य राज्य हैं:
स्लीपिंग (एस) : प्रक्रियाएँ जो निष्पादन के लिए अपनी बारी की प्रतीक्षा कर रही हैं।
रनिंग (R) : प्रक्रियाएँ जो चल रही हैं।
प्रतीक्षा (D) : एंट्री / एग्जिट ऑपरेशन के पूरा होने की प्रतीक्षा कर रही प्रक्रियाएं।
ज़ोंबी (Z) : प्रक्रियाएँ जो समाप्त हो गई हैं, लेकिन प्रक्रिया तालिका में दिखाई देना जारी है। वे प्रोग्रामिंग त्रुटियों के कारण हो सकते हैं और धीमी या समस्या पैदा करने वाली प्रणाली का लक्षण हो सकते हैं।
एक ज़ोंबी प्रक्रिया वह है जिसे कभी भी उस मूल प्रक्रिया से संकेत नहीं मिला है जिसने इसे बनाया है, एक बाल प्रक्रिया वह है जिसकी मूल प्रक्रिया उच्च स्तर की प्रक्रिया में होती है जिसे मूल प्रक्रिया के रूप में जाना जाता है जो कि बाल प्रक्रियाओं को संकेत भेजने के प्रभारी है। इससे यह संकेत मिलता है कि उनका जीवन काल समाप्त हो गया है।
वे प्रोग्रामिंग त्रुटियों के कारण हो सकते हैं और धीमी या समस्या पैदा करने वाली प्रणाली का लक्षण हो सकते हैं। यह स्थिति आमतौर पर होती है, इसलिए भी क्योंकि कुछ कॉन्फ़िगरेशन डेवलपर द्वारा चिंतन नहीं किया गया था।
विकिपीडिया में आप कर सकते हैं और पढ़ें इन प्रक्रियाओं के बारे में।
शीर्ष कमांड को निष्पादित करने से हम वास्तविक समय में सिस्टम में चल रही प्रक्रियाओं को देख सकते हैं, और यह इंगित करेगा कि क्या कोई ज़ोंबी राज्य में हैं, लेकिन यह इंगित नहीं करता है कि कौन सा है।
सभी प्रक्रियाओं को देखने के लिए, टर्मिनल में टाइप करें: ps aux, और केवल लाश देखने के लिए: ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'
अल्फ @ अल्फ ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'
Z 1945
यदि प्रक्रियाओं को सूचीबद्ध करते समय, कोई Z स्थिति के साथ दिखाई देता है, तो इसका मतलब है कि यह एक ज़ोंबी है, जिसका अर्थ है कि आवेदन अच्छी तरह से हल नहीं हुआ है या इसमें कीड़े हैं, इसके पीआईडी को जानने के लिए एक कमांड निष्पादित करके समाप्त किया जा सकता है। इस उदाहरण में:
अल्फ @ अल्फ ~ $ मार-९ ६9३1945
जब आपके पास कई ज़ोंबी प्रक्रियाएं हैं या कम से कम एक से अधिक है, तो आप निम्न कमांड का उपयोग कर सकते हैं जो उन्हें मारता है, यह केवल उसी के लिए काम करता है, यदि आप इसे ज़ोंबी प्रक्रियाओं के बिना चलाते हैं तो कुछ भी नहीं होगा:
अल्फ @ अल्फ ~ $ सुदो मार-हप `ps--Aatat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{प्रिंट $ 2}' ''
सादर
????
धन्यवाद, बहुत अच्छा योगदान, मैं समय-समय पर सत्यापन करने के लिए आदेशों को सहेजने जा रहा हूं।
धन्यवाद, अच्छा लेख।
आपके लेख से संबंधित कुछ स्पष्टीकरण:
शब्द "ज़ोंबी प्रक्रिया" तकनीकी रूप से अनुचित है और हममें से जिन लोगों को GNU / Linux के साथ थोड़ा अनुभव है, उन्हें इसका उपयोग करने से बचना चाहिए क्योंकि अपने आप में कोई प्रक्रिया नहीं चल रही है, लेकिन यह केवल एक प्रक्रिया का संदर्भ है जो अब सिस्टम में मौजूद नहीं है और उसने अपना पहचानकर्ता जारी नहीं किया।
एक "ज़ोंबी प्रक्रिया" वास्तव में प्रक्रिया पहचानकर्ता (प्रोसेस डिस्क्रिप्टर) की मैपिंग तालिका में प्रविष्टि है, बस, इसलिए यह स्मृति के कुछ बाइट्स से परे संसाधनों का उपभोग नहीं करता है जो सिस्टम का ट्रैक रखने के लिए उपयोग करता है प्रक्रिया तालिका।
भूत (या ज़ॉम्बी) रजिस्ट्री डिस्क्रिप्टर के साथ होने वाली एकमात्र समस्या यह है कि अगर ये तेजी से फैलते हैं, तो वे सैद्धांतिक रूप से पूरी प्रक्रिया विवरणक आवंटन तालिका पर कब्जा कर सकते हैं और सिस्टम को नए रिकॉर्ड के लिए जगह के बिना छोड़ सकते हैं ताकि यह संभावित रूप से हो सके नए कार्यक्रमों को चलाना असंभव है-उनकी प्रक्रियाओं को रिकॉर्ड करना-अंततः मशीन को लटका देना।
हालाँकि, ऐसा होना लगभग असंभव है क्योंकि 32-बिट सिस्टम में प्रक्रियाओं को पंजीकृत करने के लिए 32767 स्थान हैं (शायद ही कभी उपयोग नहीं किए गए) और दो बार 64-बिट सिस्टम में।
बुरी तरह से हटाए गए मृत प्रक्रियाओं के साथ सिस्टम क्रैश करने का एकमात्र तरीका प्रक्रियाओं का निर्माण करना है और प्रक्रिया विवरणक को ठीक से साफ किए बिना उन्हें जल्दी से मारना है (अर्थात, "ज़ोंबी प्रक्रियाओं का निर्माण"), लेकिन, यदि कोई व्यक्ति किसी सिस्टम को लटका देना चाहता है, तो उसका सामना करें। इससे कहीं अधिक प्रत्यक्ष तरीके हैं। एक घातीय तरीके से नई प्रक्रियाओं को जल्दी से शुरू करने के लिए जो सिस्टम को जाम कर देता है और इसे लटका देता है; फोर्क बम के साथ इसे प्राप्त करने के तरीकों में से एक:
: () {: |: &} ;;
आप सही /etc/security/limits.conf को सही ढंग से कॉन्फ़िगर करके सिस्टम को एक फोर्क बम के लिए अपेक्षाकृत प्रतिरोधी बना सकते हैं, हालांकि यह ध्यान में रखा जाना चाहिए कि जितना अधिक हम नई प्रक्रियाओं को बनाने की संभावना को सीमित करते हैं, हम अपने सिस्टम पर समान रूप से कम अनुप्रयोगों को चलाने में सक्षम होंगे। हालांकि, यह सभी पागल व्यसनियों के लिए एक वैध उपकरण है जो अपने सिस्टम पर बहुत अच्छा नियंत्रण रखना चाहते हैं!
इस आलेख में अमान्य प्रक्रिया वर्णनकर्ताओं के बारे में अच्छी जानकारी है:
http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
और इसमें एक स्पष्ट विवरण है कि कांटा बम कैसे काम करता है: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work
Salu2
एमएसएक्स: «शब्द" ज़ोंबी प्रक्रिया "तकनीकी रूप से अनुचित है और हममें से जिनको जीएनयू / लिनक्स के साथ थोड़ा अनुभव है, उन्हें इसका उपयोग करने से बचना चाहिए ...» हा हा हा। आपके अभिमान से बड़ा कुछ है: आपका बुरा स्वाद। अरे, आपने जो किया वह खराब स्वाद में है, यदि आप एक व्याख्यान देना चाहते हैं, तो संकाय में एक प्राप्त करें, या अपना खुद का ब्लॉग डालें और जो आप चाहते हैं, उसे लिखें, लेकिन फ्लैट के अच्छे अल्फ को सही करने के लिए यहां आना वास्तव में बुरा स्वाद है।
सच्चाई मुझे काफी रोचक लगी। पद से बहुत अधिक
बहुत-बहुत धन्यवाद।
उत्कृष्ट लेख धन्यवाद
MSX
"ज़ोंबी प्रक्रिया" शब्द तकनीकी रूप से अनुचित है और हममें से जिनको GNU / Linux में थोड़ा अनुभव है, उन्हें इसका उपयोग करने से बचना चाहिए "
हमें डेवलपर्स को सूचित करना होगा, चूंकि आप देखेंगे, ज़ोंबी शब्द का भी उपयोग किया जाता है, वहां मैंने इसे कंसोल पर पढ़ा।
सादर
बधाई हो, बहुत अच्छा लेख, मुझे हमेशा संदेह था कि वे PZ थे, लेकिन मेरे पास जांच करने का समय नहीं था, अब मैं पृष्ठ पर जाता हूं और मैं उत्तर देता हूं धन्यवाद ……।
KDE में कंट्रोल + एस्केप सिस्टम एक्टिविटीज के साथ बाहर जाती हैं और हम उन लाशों को जल्दी से मार सकते हैं।
एक सुधार, यह एक ZOMBIE एक ZOMBIE प्रक्रिया नहीं है
ज़ोंबी अंग्रेजी में है
स्पेनिश में ज़ोम्बी
विलासिता, धन्यवाद!
सबसे पहले, शब्द ज़ोंबी प्रक्रिया पूरी तरह से सही लगती है। साथ ही यह शब्द सबसे कम महत्वपूर्ण है।
मुद्दा यह है कि जैसा कि एमएसएक्स इंगित करता है, और एक ही विकिपीडिया (मैंने लेख पढ़ा) ज़ोंबी प्रक्रिया वास्तव में मृत है।
«जब कोई प्रक्रिया पूरी हो जाती है, तो इसकी सभी मेमोरी और संबंधित संसाधनों को निष्क्रिय कर दिया जाता है, ताकि उनका उपयोग अन्य प्रक्रियाओं द्वारा किया जा सके। वैसे भी, प्रक्रिया तालिका में प्रक्रिया प्रविष्टि अभी भी »
यही है, प्रक्रिया अब सिस्टम संसाधन नहीं ले रही है, इसलिए एमएसएक्स द्वारा समझाया गया सिस्टम पर लोड न्यूनतम है।
हालाँकि, इसकी एकमात्र चीज़ प्रक्रिया तालिका में एक अमान्य प्रविष्टि है ... जो कि, यदि उनमें से हजारों हैं, तो यह लोड हो सकता है (आखिरकार, प्रोसेसर को प्रक्रिया तालिका को पढ़ना होगा और यह बहुत सारी बेकार जानकारी पढ़ेगा) खराब प्रोग्रामिंग प्रथाओं को प्रतिबिंबित करने के अलावा (कोई व्यक्ति खराब तरीके से किए गए एप्लिकेशन बना रहा है)।
लेकिन अपने आप में पोस्ट की व्याख्या इतनी सही नहीं है और सही एक एमएसएक्स द्वारा दी गई होगी।