इसलिए अपस्टार्ट नौकरियों का एक बिंदु लिखना आसान है।
Init.d स्क्रिप्ट में बहुत सी शेल स्क्रिप्ट मैजिक है जो बार-बार मिलती है। केस स्टेटमेंट, पिडफाइल ट्रैकिंग, lsb कमेंट लाइन्स। यह बहुत स्पष्ट नहीं है कि बिना पढ़े एक GOOD init.d स्क्रिप्ट कैसे लिखें।
यदि आप पहले से ही उस सब को लिखने की परेशानी से गुजर चुके हैं, तो आपको तब तक अपस्टार्ट जॉब की आवश्यकता नहीं है, जब तक कि मैंने किसी अन्य टिप्पणी में उल्लेख नहीं किया है, आप एक और अपस्टार्ट जॉब / ईवेंट पर निर्भर हैं।
लेकिन वास्तव में, upstart चीजों को वास्तव में सरल बनाता है। जब तक आपको tmpdirs, ulimits, या runtime आर्ग्युमेंट्स जैसी चीजें सेट करने की आवश्यकता नहीं होती, आपको एक प्री-स्टार्ट की आवश्यकता नहीं होती। आपको तब तक पोस्ट-स्टॉप की आवश्यकता नहीं होनी चाहिए जब तक कि आप यह सुनिश्चित नहीं करना चाहते कि आप किसी सेवा के बाद ठीक से काम करना चाहते हैं (सेवा वास्तव में सामान्य निकास पर खुद के बाद सफाई होनी चाहिए)।
अक्सर एक विशाल init.d स्क्रिप्ट कई विकल्पों के साथ 10 - 15 लाइन अपस्टार्ट नौकरी के लिए उबालती है। सबसे जटिल init.d स्क्रिप्ट में उनके अधिकांश तर्क पूर्व-प्रारंभ में डंप हो सकते हैं। कुंजी यह है कि इस प्रक्रिया के लिए पर्यावरण को स्थापित करने के लिए कोड का सिर्फ एक छोटा सा टुकड़ा है, और प्रारंभ / रोक / प्रतिक्रिया / आदि को संभालने पर तर्क नहीं है।
सबसे कठिन हिस्सा, और वह जो लोगों को सबसे अधिक बार गलत लगता है, वह यह जानता है कि नौकरी कब शुरू / बंद करनी है। start on runlevel [2345]तर्कसंगत लगता है, लेकिन इस तथ्य को अनदेखा करता है कि नेटवर्क उस बिंदु पर समानांतर में आ रहा है, जैसा कि स्थानीय फाइल सिस्टम माउंट हैं। दौड़ने के लिए कुंजी की जरूरत होती है और दौड़ने के लिए आवश्यक न्यूनतम चीजें (अन्य सेवाओं, फाइल सिस्टम, नेटवर्क, आदि) की खोज करें और जब ऐसा किया जाता है तो शुरू करें। अधिकांश पारंपरिक नेटवर्क सेवाओं को करना चाहिए start on (local-filesystems and net-device-up IFACE!=lo)।