ज़ोंबी, ऑर्फ़न और डेमॉन प्रोसेस के बारे में विवरण निम्नलिखित हैं:
ज़ोंबी प्रोसेस
एक ज़ोंबी प्रोसेस वह प्रोसेस है जिसका निष्पादन पूरा हो चुका है लेकिन उसकी एंट्री अभी भी प्रोसेस टेबल में मौजूद है। ज़ोंबी प्रोसेस आमतौर पर चाइल्ड प्रोसेस के लिए होते हैं, क्योंकि पैरेंट प्रोसेस को अभी भी अपने चाइल्ड के एग्जिट स्टेटस को पढ़ने की आवश्यकता होती है। एक बार जब wait सिस्टम कॉल का उपयोग करके यह काम हो जाता है, तो ज़ोंबी प्रोसेस प्रोसेस टेबल से समाप्त हो जाता है। इसे ज़ोंबी प्रोसेस को "रीपिंग" (reaping) के रूप में जाना जाता है।
एक डायग्राम जो ज़ोंबी प्रोसेस के निर्माण और समाप्ति को दर्शाता है:

ज़ोंबी प्रोसेस किसी सिस्टम संसाधन का उपयोग नहीं करते लेकिन वे अपना प्रोसेस ID बनाए रखते हैं। यदि बहुत सारे ज़ोंबी प्रोसेस हैं, तो सभी उपलब्ध प्रोसेस IDs उन पर एकाधिकार कर लेते हैं। यह अन्य प्रोसेस को चलने से रोकता है क्योंकि कोई प्रोसेस IDs उपलब्ध नहीं होते।
ऑर्फ़न प्रोसेस
ऑर्फ़न प्रोसेस वे प्रोसेस हैं जो अभी भी चल रहे हैं भले ही उनका पैरेंट प्रोसेस समाप्त या समाप्त हो चुका हो। एक प्रोसेस जानबूझकर या अनजाने में ऑर्फ़न हो सकता है।
जानबूझकर ऑर्फ़न प्रोसेस
एक जानबूझकर ऑर्फ़न प्रोसेस किसी मैनुअल सपोर्ट के बिना बैकग्राउंड में चलता है। यह आमतौर पर अनिश्चित काल तक चलने वाली सर्विस शुरू करने के लिए या लंबे समय तक चलने वाले जॉब को उपयोगकर्ता के ध्यान के बिना पूरा करने के लिए किया जाता है।
अनजाने में ऑर्फ़न प्रोसेस
एक अनजाने में ऑर्फ़न प्रोसेस तब बनता है जब उसका पैरेंट प्रोसेस क्रैश या समाप्त हो जाता है। अनजाने ऑर्फ़न प्रोसेस को प्रोसेस ग्रुप मैकेनिज्म का उपयोग करके टाला जा सकता है।
तुलना
| पहलू | ज़ोंबी प्रोसेस | ऑर्फ़न प्रोसेस |
|---|---|---|
| स्थिति | समाप्त (डेड) लेकिन एंट्री मौजूद | चल रहा है (अलाइव) |
| पैरेंट | अभी भी जीवित | मृत/समाप्त |
| संसाधन उपयोग | कोई CPU/मेमोरी नहीं, केवल PID | सामान्य संसाधन उपयोग |
| समाधान | पैरेंट wait() कॉल करे | init (PID 1) द्वारा अपनाया जाता है |
| खतरा | PID थकावट | संसाधन लीक यदि अनियंत्रित |
डेमॉन प्रोसेस
डेमॉन प्रोसेस बैकग्राउंड प्रोसेस हैं जो उपयोगकर्ता के हस्तक्षेप के बिना चलते हैं। वे आमतौर पर बूट पर शुरू होते हैं और सिस्टम सेवाएं प्रदान करते हैं (जैसे httpd, sshd, cron)।
प्रैक्टिकल कमांड्स
# ज़ोंबी प्रोसेस ढूंढें
ps aux | grep Z
# ऑर्फ़न प्रोसेस ढूंढें (PPID = 1 लेकिन सिस्टम डेमॉन नहीं)
ps -eo pid,ppid,cmd | awk '$2==1 && $3!~/^\[/'
# पैरेंट को wait() के लिए मजबूर करें (यदि संभव हो)
kill -s SIGCHLD
रोकथाम
- ज़ोंबी रोकथाम: पैरेंट को
wait(),waitpid(), याSIGCHLDहैंडलर का उपयोग करना चाहिए - ऑर्फ़न रोकथाम:
setsid(),daemon(), या प्रोसेस ग्रुप्स का उपयोग करें - डबल-फोर्क तकनीक: डेमॉन बनाने के लिए मानक पैटर्न