Rc0.d, rc1.d,… निर्देशिका में / आदि


30

मैं Ubuntu चल रहा हूँ जहाँ मैं निर्देशिका है /etc/rc0.d, /etc/rc1.d, /etc/rc2.d, ..., /etc/rc6.d

मेरे मशीन से उदाहरण फ़ाइलें:

directory      example symlinks in the dir
------------------------------------------
/etc/rc1.d:    K76dovecot, K77ntp
/etc/rc2.d:    S23ntp, S24dovecot
/etc/rc3.d:    S23ntp, S24dovecot
/etc/rc4.d:    S23ntp, S24dovecot
/etc/rc5.d:    S23ntp, S24dovecot

प्रशन:

  1. कई "आरसी" निर्देशिकाओं का उद्देश्य क्या है?
  2. Ubuntu को छोड़कर और सभी निर्देशिकाओं में dovecotऔर क्यों के डुप्लिकेट स्थापित किए ?ntprc0.drc6.d
  3. यदि उन्हें ऊपर की तरह कई बार निर्दिष्ट किया जाता है, तो क्या वे वास्तव में कई बार निष्पादित होते हैं?
  4. क्या आप ऊपर से बता सकते हैं कि स्टार्टअप किस क्रम में होगा dovecotऔर क्या ntpकरेगा?
  5. स्टार्टअप पर हमेशा ntpपहले dovecotसे निष्पादित करने के लिए उबंटू को बताने का उचित तरीका क्या है ?

जवाबों:


23
  1. ये runlevelएस हैं और एक सिस्टम वी-स्टाइल दीक्षा है जिसका उपयोग अधिकांश * एनआईएक्स सिस्टम (उल्लेखनीय systemdसिस्टम के अपवाद के साथ ) द्वारा किया जाता है। कर्नेल / उपयोगकर्ता को बूट करते runlevelसमय यह तय करना चाहिए कि उसे क्या चलना चाहिए और केवल उसी पर अमल करना चाहिए runlevel। मतलब है कि runlevelआप प्रोग्राम के एक अलग सेट के साथ बूट कर सकते हैं। रुकने और रिबूट के लिए भी रनवे हैं, लेकिन जब से आप स्टार्टअप के हिस्से पर ध्यान केंद्रित कर रहे हैं, तो अभी के लिए उन्हें अनदेखा कर दें।
  2. चूँकि केवल एक ही runlevelबूट पर अमल किया जाता है, कुछ कार्यक्रमों को runlevelअलग-अलग क्रम में अलग-अलग या समान क्रम में अलग-अलग s पर शुरू / बंद करना चाहिए (सभी OS में सभी रनवे एक समान नहीं हैं)। लेकिन उबंटू कॉपी रनवेल्स 2 से 3-5, यही कारण है कि वे समान हैं।
  3. नहीं, runlevelकेवल एक बार स्टार्टअप में या जब आप बदलते हैं तो निष्पादित होते हैं runlevel
  4. ntpलिपियों को पहले dovecotरनलेवल 2-5 में निष्पादित किया जाना चाहिए , न कि रनलेवल के लिए मामला 1. स्क्रिप्ट नामों में अध्यादेशीय संख्या ( ) निष्पादन के आदेश को बताती है। तो, यह सब आपके द्वारा उपयोग किए जा रहे रनवेल पर निर्भर करता है।S23ntp
  5. यह डिस्ट्रो पर निर्भर करता है, लेकिन उबंटू के विशेष मामले में आप अपनी स्क्रिप्ट को रनलेवल 1 और 2 में जोड़ सकते हैं।

उबंटू रनवेल्स के बारे में विकिपीडिया लेख में अधिक जानकारी


इसलिए अगर मैं सभी RC.X dirs को स्क्रिप्ट डालूं, तो यह कुछ समय के लिए निष्पादित होगा या नहीं?
फ्लैश थंडर

@FlashThunder नं।
ब्रिअम

40

जैसा कि दूसरों ने नोट किया है, इसका जवाब सभी रनलेव्स के बारे में है जो मूल रूप से एक ऑपरेटिंग सिस्टम के संचालन के तरीके हैं। लिनक्स पर, ये आमतौर पर हैं:

ID  Name                               Description
0   Halt                               Shuts down the system.
1   Single-user Mode                   Mode for administrative tasks.
2   Multi-user Mode                    Does not configure network interfaces and 
                                       does not export networks services.
3   Multi-user Mode with Networking    Starts the system normally.
4   Not used/User-definable            For special purposes.
5   Start the system normally with 
    with GUI                           As runlevel 3 + display manager.
6   Reboot                             Reboots the system.

इसलिए, प्रत्येक rcNनिर्देशिका में लिपियों के प्रतीकात्मक लिंक होते हैं जिन्हें उस रनवे पर चलाया जाना चाहिए। सभी वास्तविक स्क्रिप्ट सामान्य रूप से /etc/init.dनिर्देशिका में हैं:

$ ls -l /etc/rc5.d/S22cron
lrwxrwxrwx 1 root root 14 Jan 14  2013 /etc/rc5.d/S22cron -> ../init.d/cron

प्रतीकात्मक लिंक नामकरण

एक प्रतीकात्मक लिंक जिसका नाम एक Sवसीयत के साथ शुरू होता है , रनवेल पर विचाराधीन शुरू किया Kजाएगा, जबकि जिनका नाम शुरू होता है उन्हें मार दिया जाएगा। ध्यान दें कि सभी लिंक rc6.d, रिबूट रनले के साथ शुरू होते हैं K। ऐसा इसलिए क्योंकि उन्हें सभी को रिबूट के लिए रोका जाना चाहिए और कुछ भी शुरू नहीं करना चाहिए।

प्रारंभिक पत्र के बाद के नंबर लिंक किए गए स्क्रिप्ट के रनिंग ऑर्डर को संदर्भित करते हैं। इससे छोटी संख्या वालों को उच्च संख्या वाले लोगों के समक्ष चलाया जाएगा। तो, अपने विशिष्ट उदाहरण में, पहलेS23ntp (इस मामले में शुरू) चलाया जाएगा । S24dovecot


बहुत बढ़िया जवाब! क्या होगा यदि दो लिपियों में एक ही संख्या है, उदाहरण के लिए: S01bluetoothऔर S01rsync, क्या आदेश मनमाना होगा?
direprobs

@direprobs हुह, अच्छा सवाल है। हां, मुझे लगता है कि किसी एक को यादृच्छिक रूप से चुना जाएगा। हालांकि मैं नहीं जानता कि यह नहीं कह सकता।
terdon

@tredon मुझे लगता है कि उन्हें उनके फ़ाइलनाम के आधार पर चुना जाएगा क्योंकि वे S01तुलना के साथ शुरू करते हैं b< r, आपको विचार मिलता है। शायद!
direprobs 22

1
संक्षिप्त उत्तर है, /etc/init.d/rcकहते हैं for s in /etc/rc$runlevel/S*; do …, इसलिए यह केवल ग्लोब विस्तार क्रम में जाता है; यानी, न्यूमेरिक / अल्फाबेटिक। लंबा जवाब यह है कि मुझे याद रखने की तुलना में कोड बहुत अधिक जटिल है। मैं अगले छह से आठ सप्ताह के भीतर कुछ समय इसे अध्ययन करने में खर्च करने की कोशिश करूंगा। पहली नज़र में, यह है कि यह बाद नंबर निकालने है लग रहा है Sऔर इसके साथ कुछ कर रही है, तो S42beeblebroxऔर S42zaphodअधिक मज़बूती से, कहते हैं जुड़ा हो सकता है, S43arthurऔर S44dent
जी-मैन का कहना है कि 'मोनिका'

वास्तव में महान जवाब के लिए धन्यवाद, लेकिन मेरे पास एक सवाल है। मैंने अपना कार्यक्रम स्टार्टअप में डाल दिया, लेकिन ऐप की गति कम है: stackoverflow.com/questions/49251955/…
H.Ghassami

4

1) कई rcX.d निर्देशिका निर्दिष्ट करती हैं कि 'X' रनलेवल के दौरान कौन सी सेवाएं शुरू या बंद करनी हैं।

2) rc0.d रनलेवल 0 के लिए है जो शटडाउन है। rc6.d रिबूट के लिए है। बाकी सभी अलग-अलग रनवे (2 - 5) के लिए हैं। S का अर्थ है स्टार्ट और K फॉर किल। ये मूल रूप से /etc/rc.d में मूल लिपियों के लिंक हैं। S / K के बाद की संख्या प्राथमिकता है जिसके द्वारा सेवाओं को शुरू / मार दिया जाएगा।

3) हाँ यदि वे कई बार निर्दिष्ट किए जाते हैं तो स्टार्ट / किल स्क्रिप्ट कई बार चलाई जाएगी। लेकिन कोई ऐसा नहीं करना चाहता।

4) प्राथमिकता संख्याओं को देखते हुए, ntp सेवा को पहले dovecot द्वारा शुरू किया जाएगा।

5) 4 वें बिंदु का रास्ता।

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