/ Etc / init / और /etc/init.d/ के बीच क्या अंतर है?


जवाबों:


229

/etc/init.dसिस्टम V init टूल्स (SysVinit) द्वारा उपयोग की जाने वाली स्क्रिप्ट शामिल हैं। यह लिनक्स के लिए पारंपरिक सेवा प्रबंधन पैकेज है, जिसमें initप्रोग्राम (पहली प्रक्रिया जो तब चलती है जब कर्नेल को इनिशियलाइज़िंग समाप्त कर दिया जाता है) और साथ ही सेवाओं को शुरू करने और उन्हें बंद करने के लिए कुछ बुनियादी ढाँचे होते हैं। विशेष रूप से, में फ़ाइलों को /etc/init.dशेल स्क्रिप्ट कि प्रतिक्रिया करने के लिए कर रहे हैं start, stop, restart, और (जब समर्थित) reloadकिसी विशेष सेवा का प्रबंधन करने के आदेश देता है। इन लिपियों को सीधे या (सबसे अधिक) कुछ अन्य ट्रिगर के माध्यम से (आमतौर पर एक प्रतीकात्मक लिंक की उपस्थिति) के माध्यम से लागू किया जा सकता है /etc/rc?.d/

/etc/initइसमें उपस्टार्ट द्वारा उपयोग की जाने वाली कॉन्फ़िगरेशन फ़ाइलें हैं। अपस्टार्ट एक युवा सेवा प्रबंधन पैकेज है जो उबंटू द्वारा चैंपियन है। में फ़ाइलें /etc/initकल का नवाब कह कैसे और कब करने के लिए विन्यास फाइल कर रहे हैं start, stop, reloadविन्यास, या क्वेरी statusएक सेवा की। ल्यूसिड के रूप में, उबंटू SysVinit से Upstart में परिवर्तित हो रहा है, जो बताता है कि क्यों कई सेवाएं SysVinit स्क्रिप्ट के साथ आती हैं, भले ही Upstart कॉन्फ़िगरेशन फ़ाइलें पसंद की जाती हैं। वास्तव में, SysVinit स्क्रिप्ट अपस्टार्ट में एक संगतता परत द्वारा संसाधित की जाती हैं।

.dनिर्देशिका नामों में आमतौर पर किसी विशेष स्थिति के लिए कई कॉन्फ़िगरेशन फ़ाइलों या लिपियों वाली निर्देशिका को इंगित करता है (उदाहरण के /etc/apt/sources.list.dलिए एक वर्चुअल बनाने के लिए संक्षिप्त की गई फ़ाइलें होती हैं sources.list; /etc/network/if-up.dजिसमें ऐसी स्क्रिप्ट होती हैं जिन्हें निष्पादित किया जाता है जब नेटवर्क i nter f ace सक्रिय होता है)। इस संरचना का उपयोग आमतौर पर तब किया जाता है जब निर्देशिका में प्रत्येक प्रविष्टि को एक अलग स्रोत द्वारा प्रदान किया जाता है, ताकि प्रत्येक पैकेज अपने प्लग-इन को केवल संदर्भ के लिए एकल कॉन्फ़िगरेशन फ़ाइल को पार्स किए बिना जमा कर सके। इस स्थिति में, ऐसा होता है कि "init" डायरेक्टरी के लिए एक तार्किक नाम है, SysVinit पहले आया और इस्तेमाल किया गया init.d, और उपस्टार्ट ने सादे का उपयोग कियाinitएक समान उद्देश्य के साथ एक निर्देशिका के लिए (यह अधिक "मुख्यधारा" होता, और शायद कम अभिमानी होता, अगर वे /etc/upstart.dइसके बजाय इस्तेमाल होते)।

¹ initrd की गिनती नहीं


28
गूढ़ ऐतिहासिक नोट: .dनिर्देशिकाओं ने सिस्टम V के साथ प्रवेश किया। यह तब एक हैरान करने वाला अंकन था और अंततः शायद एक व्यक्ति का विचार जो कोडबेस में आ गया और नहीं निकल सका। उदाहरण के लिए, यदि आपको लगता है कि catयह कार्य करने के लिए एक बुरा नाम है, तो कल्पना करें कि इसे बदलने के लिए आपको पूरे सिस्टम में कितनी फाइलें छूनी होंगी।
msw

सिस्टम पर, दोनों निर्देशिकाएं, उपस्टार्ट और SysVinit में से किसका उपयोग किया जाता है? क्या जांच करने का कोई तरीका है?
अशेष

3
@AsheeshR चेक करें कि क्या कोई पैकेज है upstartया नहीं sysvinit। और हाल के संस्करणों में, यह तब भी हो सकता है systemd(जब मैं अपना उत्तर लिखता हूं तो उबंटू वापस मौजूद नहीं था)। यह जो भी पैकेज प्रदान करता है /sbin/init( dpkg -S /sbin/init) है।
जिल्स

एडब्ल्यूएस उबंटू उदाहरण पर मैं (बिटनामी से) का उपयोग कर रहा हूं, यह upstartपैकेज है जो / sbin / init (भागा हुआ dpkg -S /sbin/init) प्रदान करता है । लेकिन Bitnami ने अपनी स्क्रिप्ट /etc/init.d निर्देशिका में रखी है। क्या यह परस्पर विरोधी w / आपके जवाब @AsheeshR से ऊपर नहीं है? धन्यवाद।
सबुनकु

@Sabuncu यह "SysVinit स्क्रिप्ट्स का एक उदाहरण है जो अपस्टार्ट में एक संगतता परत द्वारा संसाधित होती है"।
गिल्स

29

".D" को आमतौर पर एक निर्देशिका नाम से जोड़ा जाता है ताकि यह इंगित किया जा सके कि एक स्क्रिप्ट या एकल कॉन्फ़िगरेशन फ़ाइल द्वारा संभाला हुआ (या क्या हो सकता है) सुविधा के लिए कई फाइलों में विभाजित किया गया है, लेकिन जो शामिल होना चाहिए, या निष्पादित किया जाना चाहिए।

उदाहरण के लिए, /etc/apache/conf.d/या/etc/apt/sources.d/

ऐसे मामलों में जहां यह महत्वपूर्ण है कि उन्हें किस क्रम में शामिल / निष्पादित किया जाना चाहिए, इन निर्देशिकाओं में फाइलें कभी-कभी एक संख्या से शुरू होती हैं, जैसे "00-डिफ़ॉल्ट" या "80-उपयोगकर्ता" ताकि वे सही क्रम में निष्पादित हों।

इसके मामले में /etc/init.d/यह इंगित करता है कि "init.d" स्क्रिप्ट को सभी को निष्पादित किया जाना चाहिए। आजकल, हालांकि, आधुनिक ऑपरेटिंग सिस्टम का init सिस्टम इससे थोड़ा अधिक शामिल है, लेकिन निर्देशिका नाम अभी भी है।


हो सकता है कि .dइसका मतलब यह 'बधिर' प्रक्रिया से संबंधित हो जो आमतौर पर बूट-टाइम पर शुरू की जाती है।

21
.d निश्चित रूप से निर्देशिका के लिए है, डेमन नहीं।
मार्टिन

13

जैसा कि आप बताते हैं, ".d" नामकरण अजीब और अजीब है, और इसका वास्तव में किसी भी आधुनिक प्रणाली में कोई स्थान नहीं है - आप देखेंगे कि अधिकांश आधुनिक सेवाओं ने इसे छोड़ दिया है।

निर्देशिका का कारण /etc/initऔर नहीं /etc/upstartहै क्योंकि अपस्टार्ट परियोजना का नाम है, वास्तविक स्थापित बाइनरी अभी भी है /sbin/initइस प्रकार इसके कॉन्फ़िगरेशन के लिए कोई ऐसा नाम नहीं होगा जो बाइनरी से मेल नहीं खाता हो।


7
यह गलत है, उदाहरण के लिए देखें udev's rules.d, Xorg's अपेक्षाकृत हाल ही में xorg.conf.d, बहुत पुराना नहीं है /etc/profile.dआदि
रुसलान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.