लिनक्स में "/etc/init.d" और "/etc/rcX.d" निर्देशिकाओं के बीच क्या संबंध है?


25

मैं " लिनक्स कमांड लाइन और शेल स्क्रिप्टिंग बाइबल, द्वितीय संस्करण " नामक पुस्तक से कमांड लाइन सीख रहा हूं । पुस्तक यह बताती है:

कुछ लिनक्स कार्यान्वयन में बूटअप पर स्वचालित रूप से शुरू करने के लिए प्रक्रियाओं की एक तालिका होती है। लिनक्स सिस्टम पर, यह तालिका आमतौर पर विशेष फ़ाइल / आदि / इनटैब में स्थित होती है।

अन्य सिस्टम (जैसे कि लोकप्रिय उबंटू लिनक्स वितरण) /etc/init.d फ़ोल्डर का उपयोग करते हैं, जिसमें बूट समय पर व्यक्तिगत अनुप्रयोगों को शुरू करने और रोकने के लिए स्क्रिप्ट होती है। स्क्रिप्ट /etc/rcX.d फ़ोल्डर के तहत प्रविष्टियों के माध्यम से शुरू की जाती हैं, जहां एक्स एक रन स्तर है।

शायद इसलिए कि मैं लिनक्स में नया हूं, मुझे समझ नहीं आया कि दूसरे पैराग्राफ का क्या मतलब है। क्या कोई इसे बहुत स्पष्ट भाषा में समझा सकता है?



@bdowning यह किसी का अलग है। मेरा एक संदर्भ है। आपके द्वारा लिंक किए गए पृष्ठ में जो प्रश्न मुझे दिखाई दे रहे हैं, वे इस से अलग हैं, IMO।
इसका_मे

@ बंद करना, लेकिन डुप्लिकेट के रूप में झंडा अधिक जानकारीपूर्ण होता अगर आप ऐसा महसूस करते
n611x007

जवाबों:


30

आइए भूल जाते हैं init.dया rcx.dचीजों को बहुत सरल रखते हैं। कल्पना कीजिए कि आप एक प्रोग्राम की प्रोग्रामिंग कर रहे हैं, जिसकी एकमात्र जिम्मेदारी एक-एक करके अन्य स्क्रिप्ट्स को चलाना या मारना है।

हालाँकि आपकी अगली समस्या यह सुनिश्चित करना है कि वे क्रम में चलें। आप ऐसा कैसे करेंगे?

और scriptsस्क्रिप्ट चलाने के लिए इस प्रोग्राम को एक फ़ोल्डर के अंदर देखने की कल्पना करने देता है । लिपियों की प्राथमिकता के क्रम में आप उन्हें संख्यात्मक क्रम बताने की अनुमति देंगे। इस आदेश में क्या बीच का रिश्ता तय है init.dऔरrc

दूसरे शब्दों init.dमें, स्क्रिप्ट को चलाने के लिए और चलाने के लिए rcX.dउनका क्रम होता है।

में Xमान rcX.d रन स्तर है। यह ओएस वर्तमान स्थिति में शिथिल रूप से अनुवादित किया जा सकता है।

यदि आप rcX.dस्क्रिप्ट के अंदर खोदते हैं तो आपको यह प्रारूपण मिलेगा:

Xxxabcd
  • Xके साथ प्रतिस्थापित किया जाता है Kया S, जो इस बात के लिए खड़ा होता है कि स्क्रिप्ट चालू स्तर में होनी चाहिए killedया नहींstarted
  • xx क्रम संख्या है
  • abcd स्क्रिप्ट का नाम है (नाम अप्रासंगिक है, लेकिन यह अंक कहां है यह स्क्रिप्ट चलेगी)

2
अद्भुत व्याख्या, बहुत स्पष्ट। साभार @whoami
13:_

9

लिनक्स के लिए कई अलग-अलग init सिस्टम हैं। मुख्य हैं SysVinit (पारंपरिक एक), कल का नवाब (उबंटू की जगह), और systemd (फेडोरा और ग्नोम द्वारा धक्का)। निर्देशिका /etc/init.dऔर /etc/rc?.dSysVinit द्वारा उपयोग किया जाता है। पुस्तक में उबंटू के संबंध में उनका उल्लेख किया जा सकता है क्योंकि जानकारी थोड़ी सी है (उबंटू बाकी सभी की तरह SysVinit का उपयोग करने के लिए उपयोग किया जाता है) या क्योंकि वे निर्देशिकाएं अभी भी संगतता के लिए मौजूद हैं।

/etc/init.dस्क्रिप्ट का एक गुच्छा होता है, प्रत्येक में सेवा शुरू करने और बंद करने के निर्देश होते हैं। इनमें से कुछ सेवाओं को बूट समय पर शुरू करने की आवश्यकता है; दूसरों को मल्टीसियर मोड में शुरू करने की आवश्यकता है लेकिन एकल-उपयोगकर्ता रखरखाव मोड में नहीं; और विभिन्न सेवाओं को वांछित सेवाओं के विभिन्न सेटों के साथ परिभाषित करना संभव है। SysVinit के माध्यम से इस का प्रबंधन करता है रनलेवलों । निर्देशिका /etc/rc$N.dमें रनलेवल एन ( /etc/rc$N.d/S*) दर्ज करते समय चलाने के लिए स्क्रिप्ट होती है और रनलेवल एन ( ) को छोड़ते समय चलने वाली स्क्रिप्ट /etc/rc$N.d/K*। क्योंकि कई रनवे में स्क्रिप्ट होती हैं, प्रत्येक रनलेवल के लिए स्क्रिप्ट की एक कॉपी को स्टोर करने के बजाय, स्क्रिप्ट सभी को एक ही स्थान पर संग्रहीत किया जाता है /etc/init.d, और रनलेवल-विशिष्ट निर्देशिकाएं/etc/rc?.dप्रतीकात्मक लिंक होते हैं। इसके अलावा प्रतीकात्मक लिंक के नाम से पता चलता है कि सेवा को रनवे में शुरू किया जाना है ( S*) या रोका (मारा गया K*), और एक संख्यात्मक उपसर्ग का उपयोग उस क्रम को नियंत्रित करने के लिए किया जाता है जिसमें स्क्रिप्ट निष्पादित की जाती हैं।

स्क्रिप्ट traversing के लिए जिम्मेदार /etc/rc$N.dहै /etc/init.d/rc(पूर्व कल का नवाब Ubuntu पर और डेबियन पर; स्थानों अन्य लिनक्स वितरण पर भिन्न हो सकते हैं)।


तो, उबंटू अब /etc/init.dऔर उपयोग नहीं कर /etc/rc?.dरहा है, और इसके बजाय अपस्टार्ट है?
इसका_मे

1
@ कृष'सूजा बिलकुल नहीं। उबंटू SysVinit के बजाय अपस्टार्ट का उपयोग करता है, लेकिन कई पैकेज अभी भी /etc/init.d( उपस्टार्ट .confफ़ाइलों के बजाय /etc/init) में स्क्रिप्ट को शिप करते हैं , इसलिए उपस्टार्ट अभी भी समर्थन करता है /etc/init.dऔर /etc/rc?.dसंगतता के लिए।
गिल्स का SO-

उबंटू ने 15.04 के बाद से अपस्टार्ट से सिस्टमड में स्विच किया। तो इस समय (16.04) उबंटू में तीन init सिस्टम हैं: SysVinit, Upstart और systemd। पहले और दूसरे को पिछड़ी संगतता के लिए छोड़ दिया जाता है।
पेट्रोक्लिफ

4

/etc/init.d निर्देशिका जहां init स्क्रिप्ट हैं।

वह जगह etc/rcX.dहै जहां रनलेवल में प्रवेश करते समय कौन सी सेवाओं को नियंत्रित किया जाता है या मार दिया जाता है XrcX.dK के साथ शुरू होने वाली फाइलें पैरामीटर के साथ निष्पादित की जाती हैं stop, और जिन फाइलों Sको पैरामीटर के साथ निष्पादित किया जाता है start। यह अनुक्रम स्टार्टअप और बाद में एक दो अंकों की संख्या का उपयोग कर बंद क्रम में विशिष्ट है Kया S। उचित शुरुआत सुनिश्चित करने और आदेश देने से रोकने के लिए दो अनुक्रमों को 100 तक जोड़ना सामान्य है।

कार्यक्रम लिंक को हटाने या के मामले को बदलकर एक रन के स्तर में निष्क्रिय किया जा सकता Kहै या Sकरने के लिए kया s

संपादित करें: प्रशासक आमतौर पर उन लिपियों को चलाते हैं /etc/init.dजिनसे वितरण के आधार पर किसी अन्य निर्देशिका का प्रतीकात्मक लिंक हो सकता है। (अलग-अलग वितरण के अलग-अलग मानक हैं।)

rcX.dप्रवर्तन कोड द्वारा उपयोग किया जाता रन का स्तर बदलने के लिए।


सबसे सिस्टम पर, /etc/init.dके तहत निर्देशिका में एक सिमलिंक है/etc/rc.d/init.d
निखिल Mulley

1
तो, मूल रूप /etc/init.dसे बिना बेकार है /etc/rcX.d? और चूंकि /etc/rcX.dस्टार्टअप पर लॉन्च किए जाने वाले कार्यक्रमों का नियंत्रक है, यह फ़ंक्शन उसी के समान है /etc/init.d, सही है?
इसका_मेरा

यह सिस्टम पर निर्भर करता है। उदाहरण के लिए, Gentoo, inet फ़ाइलों के लिए केवल /etc/init.d का उपयोग करता है; इसकी कोई /etc/rc*.d निर्देशिका नहीं है। इसी तरह आर्क लिनक्स, /etc/init.d के बजाय केवल /etc/rc.d है।
laebshade

1

हालाँकि @BillThor ने इसे बहुत अच्छी तरह से बनाया है, यहाँ मेरी समझ /etc/rcX.dऔर है /etc/init.d:

  • /etc/init.d बूट समय पर व्यक्तिगत अनुप्रयोगों को शुरू करने और रोकने के लिए स्क्रिप्ट शामिल हैं।
  • /etc/rc?.dनिर्देशिका विभिन्न रन स्तरों का प्रतिनिधित्व करती हैं और भीतर मौजूद स्क्रिप्ट /etc/init.dनिर्देशिका में वास्तविक लिपियों के प्रतीकात्मक लिंक के अलावा कुछ भी नहीं हैं । रन लेवल बदलने से सिस्टम का मोड बदल जाता है, जैसे बहुत ही बेसिक सिंगल यूजर मोड कंसोल-ओनली मोड टू एडवांस्ड ग्राफिकल इंटरफेस।

तो, खुद के /etc/rc?.dबिना निर्देशिका का कोई उपयोग नहीं /etc/init.dहै (और निश्चित रूप से, इसके विपरीत)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.