मैं एक शेल स्क्रिप्ट लिख रहा हूं जिसे मैं डेमोंटूलस या डेमनीज जैसे बाहरी उपकरणों का उपयोग किए बिना स्टार्टअप पर एक डेमन के रूप में चलाना चाहूंगा ।
लिनक्स डेमन राइटिंग HOWTO
लिनक्स डेमन राइटिंग HOWTO के अनुसार , एक उचित डेमॉन में निम्नलिखित विशेषताएं हैं:
- मूल प्रक्रिया से कांटे
- बंद कर देता है सभी फ़ाइल वर्णनकर्ता (यानी,
stdin
,stdout
,stderr
) - लेखन के लिए लॉग खोलता है (यदि कॉन्फ़िगर किया गया है)
- लगातार (आमतौर पर ) काम करने वाली निर्देशिका को बदलता है
/
- फ़ाइल मोड मास्क (umask) रीसेट करता है
- एक अद्वितीय सत्र आईडी (SID) बनाता है
daemonize परिचय
Daemonize परिचय आगे जाता करते हुए कहा कि एक विशिष्ट डेमॉन भी:
- अपने नियंत्रण टर्मिनल से अलग हो जाता है (अगर वहाँ एक है) और सभी टर्मिनल संकेतों को अनदेखा करता है
- इसके प्रक्रिया समूह से अलग हो जाता है
- हैंडल
SIGCLD
मैं कैसे एक में यह सब करना होगा sh
, dash
या bash
केवल आम लिनक्स उपकरणों के साथ स्क्रिप्ट?
स्क्रिप्ट अतिरिक्त सॉफ्टवेयर के बिना संभव के रूप में कई विकृतियों पर चलने में सक्षम होना चाहिए, हालांकि डेबियन हमारा प्राथमिक फोकस है।
नोट: मैं जानता हूँ कि वहाँ पर जवाब के बहुत सारे हैं StackExchange के उपयोग की सिफारिश नेटवर्क nohup
या setsid
, लेकिन न तो इन तरीकों टैकल के उपर्युक्त सभी आवश्यकताओं को।
संपादित करें: डेमॉन (7) मैनपेज भी कुछ संकेत दिए गए हैं, हालांकि बड़े-शैली के बीच कुछ मतभेद होने लगते हैं देता है SysV
डेमॉन और नए systemd
लोगों को। चूंकि विभिन्न प्रकार के डिस्ट्रोस के साथ संगतता महत्वपूर्ण है, कृपया सुनिश्चित करें कि उत्तर किसी भी अंतर को स्पष्ट करता है।
daemon
और वे अन्य चीजें मनमाने ढंग से शेल स्क्रिप्ट चलाने के लिए हैं जैसे कि चलाने के लिए कोई प्रावधान नहीं है। एक डेमन। चूंकि आप लेखक हैं, पूरी तरह से उस स्क्रिप्ट के नियंत्रण में है, इसलिए इसे बनाएं ताकि इसे सिस्टमड यूनिटफाइल या आरडीडी स्क्रिप्ट से लॉन्च किया जा सके। आपने "उचित" निर्दिष्ट किया !