लिनक्स में इनिट कमांड का उपयोग कैसे करें

Init सभी प्रक्रियाओं के माता पिता है। इसकी प्राथमिक भूमिका फ़ाइल / etc / inittab में संग्रहीत स्क्रिप्ट से प्रक्रियाएं बनाना है ( inittab (5) देखें)। इस फ़ाइल में आमतौर पर ऐसी प्रविष्टियां होती हैं जो उपयोगकर्ता द्वारा लॉग इन की जा सकने वाली प्रत्येक पंक्ति पर गेट्टी एस को उत्पन्न करने का कारण बनती हैं। यह किसी विशेष सिस्टम द्वारा आवश्यक स्वायत्त प्रक्रियाओं को भी नियंत्रित करती है।

रनलेबल

एक रनलेवल सिस्टम की एक सॉफ्टवेयर कॉन्फ़िगरेशन है जो केवल प्रक्रियाओं का एक चयनित समूह मौजूद है। इनमें से प्रत्येक रनलेवल के लिए init द्वारा उत्पन्न प्रक्रियाओं को / etc / inittab फ़ाइल में परिभाषित किया गया है। इनिट आठ रनलेवल में से एक में हो सकता है: 0-6 और एस या एस । रनलेवल को एक विशेषाधिकार प्राप्त उपयोगकर्ता रन टेलिनेट द्वारा बदला जाता है, जो कि इन्हें बदलने के लिए उपयुक्त सिग्नल भेजता है, यह बताता है कि कौन सा रनलेवल बदलना है।

रनलेवल 0 , 1 , और 6 आरक्षित हैं। रनलेवल 0 का उपयोग सिस्टम को रोकने के लिए किया जाता है, सिस्टम को रीबूट करने के लिए रनलेवल 6 का उपयोग किया जाता है, और रनलेवल 1 का उपयोग सिस्टम को एकल उपयोगकर्ता मोड में लाने के लिए किया जाता है। रनलेवल एस वास्तव में सीधे उपयोग करने के लिए नहीं है, लेकिन रनलेवल में प्रवेश करते समय निष्पादित स्क्रिप्ट के लिए अधिक 1. इस पर अधिक जानकारी के लिए, शट डाउन (8) और इनिटैब (5) के लिए मैनपेज देखें।

रनलेवल 7-9 भी वैध हैं, हालांकि वास्तव में दस्तावेज नहीं है। ऐसा इसलिए है क्योंकि "पारंपरिक" यूनिक्स वेरिएंट उनका उपयोग नहीं करते हैं। यदि आप उत्सुक हैं, तो रनलेवल एस और एस वास्तव में वही हैं। आंतरिक रूप से वे एक ही रनलेवल के लिए उपनाम हैं।

बूटिंग

इनिट को कर्नेल बूट अनुक्रम के अंतिम चरण के रूप में बुलाया जाने के बाद, यह फ़ाइल / etc / inittab को देखने के लिए देखता है कि क्या initdefault प्रकार प्रविष्टि है ( inittab (5) देखें)। Initdefault प्रविष्टि सिस्टम के प्रारंभिक रनलेवल निर्धारित करता है। अगर ऐसी कोई प्रविष्टि नहीं है (या नहीं / etc / inittab बिल्कुल), सिस्टम कंसोल पर एक रनलेवल दर्ज किया जाना चाहिए।

रनलेवल एस या सिस्टम को एकल उपयोगकर्ता मोड में लाता है और उसे / etc / inittab फ़ाइल की आवश्यकता नहीं होती है। एकल उपयोगकर्ता मोड में, / dev / console पर रूट खोल खोला जाता है

एकल उपयोगकर्ता मोड में प्रवेश करते समय, init /etc/ioctl.save से कंसोल के ioctl (2) राज्यों को पढ़ता है । यदि यह फ़ाइल मौजूद नहीं है, तो init 9600 बॉड और क्लॉक सेटिंग्स के साथ लाइन शुरू करता है। जब init एकल उपयोगकर्ता मोड छोड़ देता है, तो यह इस फ़ाइल में कंसोल की ioctl सेटिंग्स संग्रहीत करता है ताकि यह उन्हें अगले एकल-उपयोगकर्ता सत्र के लिए पुन: उपयोग कर सके।

पहली बार बहु-उपयोगकर्ता मोड में प्रवेश करते समय, init बूट और बूटवेट प्रविष्टियों को निष्पादित करता है ताकि उपयोगकर्ता लॉग इन करने से पहले फ़ाइल सिस्टम को घुमाने की अनुमति मिल सके। फिर रनलेवल से मेल खाने वाली सभी प्रविष्टियां संसाधित की जाती हैं।

एक नई प्रक्रिया शुरू करते समय, init पहले जांचता है कि फ़ाइल / etc / initscript मौजूद है या नहीं। यदि ऐसा होता है, तो यह प्रक्रिया शुरू करने के लिए इस स्क्रिप्ट का उपयोग करता है।

प्रत्येक बार जब कोई बच्चा समाप्त हो जाता है, तो init इस तथ्य को रिकॉर्ड करता है और कारण यह / var / run / utmp और / var / log / wtmp में मर जाता है, बशर्ते कि ये फ़ाइलें मौजूद हों।

रनलेवल बदलना

इसके बाद निर्दिष्ट सभी प्रक्रियाओं को उत्पन्न करने के बाद, init अपनी वंश प्रक्रियाओं में से एक के लिए मरने के लिए इंतजार कर रहा है, एक पावरफेल सिग्नल, या जब तक यह सिस्टम के रनलेवल को बदलने के लिए टेलिनिट द्वारा संकेतित नहीं किया जाता है। जब उपर्युक्त तीन स्थितियों में से एक होता है, तो यह / etc / inittab फ़ाइल की पुन: जांच करता है। किसी भी समय इस फ़ाइल में नई प्रविष्टियां जोड़ दी जा सकती हैं। हालांकि, अभी भी उपरोक्त तीन स्थितियों में से एक के लिए इंतजार कर रहा है। तत्काल प्रतिक्रिया प्रदान करने के लिए, टेलिनेट Q या q कमांड / etc / inittab फ़ाइल को दोबारा जांचने के लिए जागृत हो सकता है।

यदि init एकल उपयोगकर्ता मोड में नहीं है और पावरफेल सिग्नल (SIGPWR) प्राप्त करता है, तो यह फ़ाइल / etc / powerstatus को पढ़ता है। फिर यह इस फ़ाइल की सामग्री के आधार पर एक कमांड शुरू करता है:

एफ (AIL)

बिजली असफल रही है, यूपीएस बिजली प्रदान कर रहा है। पावरवेट और पावरफेल प्रविष्टियों का निष्पादन करें।

ठीक)

शक्ति बहाल कर दी गई है, powerokwait प्रविष्टियों निष्पादित करें।

एल (ओ)

बिजली असफल हो रही है और यूपीएस की बैटरी कम है। Powerfailnow प्रविष्टियों का निष्पादन करें।

यदि / etc / powerstatus मौजूद नहीं है या इसमें कुछ और शामिल है तो अक्षर एफ , या एल , init व्यवहार करेगा जैसे कि उसने पत्र एफ पढ़ा है।

एसआईजीपीडब्लूआर और / आदि / पावरस्टैटस का उपयोग निराश है। कोई भी इनिट के साथ बातचीत करने के इच्छुक / dev / initctl नियंत्रण चैनल का उपयोग करना चाहिए - इसके बारे में अधिक दस्तावेज़ीकरण के लिए sysvinit पैकेज का स्रोत कोड देखें।

जब init से रनलेवल को बदलने का अनुरोध किया जाता है, तो यह चेतावनी सिग्नल SIGTERM को उन सभी प्रक्रियाओं को भेजता है जो नए रनलेवल में अपरिभाषित हैं। यह सिग्की सिग्नल के माध्यम से जबरन इन प्रक्रियाओं को समाप्त करने से पहले 5 सेकंड तक प्रतीक्षा करता है। ध्यान दें कि init मानता है कि ये सभी प्रक्रियाएं (और उनके वंशज) एक ही प्रक्रिया समूह में रहते हैं जो मूल रूप से उनके लिए बनाई गई थी। यदि कोई प्रक्रिया अपनी प्रक्रिया समूह संबद्धता को बदलती है तो उसे इन संकेतों को प्राप्त नहीं होगा। ऐसी प्रक्रियाओं को अलग से समाप्त करने की आवश्यकता है।

Telinit

/ sbin / telinit / sbin / init से जुड़ा हुआ है। यह उचित कार्रवाई करने के लिए एक चरित्र चरित्र और सिग्नल init लेता है। निम्नलिखित तर्क टेलीिनिट के निर्देश के रूप में कार्य करते हैं:

0 , 1 , 2 , 3 , 4 , 5 या 6

निर्दिष्ट रन स्तर पर स्विच करने के लिए init बताओ।

, बी , सी

रनलेवल , बी या सी वाले केवल उन / etc / inittab फ़ाइल प्रविष्टियों को संसाधित करने के लिए init बताएं।

क्यू या क्यू

/ etc / inittab फ़ाइल को पुनः जांचने के लिए init बताएं।

एस या एस

एकल उपयोगकर्ता मोड में स्विच करने के लिए init बताओ।

यू या यू

खुद को फिर से निष्पादित करने के लिए init बताओ (राज्य को संरक्षित)। / Etc / inittab फ़ाइल की कोई पुन: जांच नहीं होती है। रन स्तर एसएस 1233 में से एक होना चाहिए, अन्यथा अनुरोध चुपचाप अनदेखा किया जाएगा।

टेलिनिट यह भी बता सकता है कि सिगटरम और सिगकिल संकेतों को भेजने के बीच कितनी देर तक प्रतीक्षा करनी चाहिए। डिफ़ॉल्ट 5 सेकंड है, लेकिन इसे -t sec विकल्प के साथ बदला जा सकता है।

टेलीिनिट केवल उचित विशेषाधिकार वाले उपयोगकर्ताओं द्वारा ही बुलाया जा सकता है।

इनिट बाइनरी जांच करता है कि क्या यह प्रक्रिया प्रक्रिया आईडी को देखकर init या telinit है; वास्तविक init की प्रक्रिया आईडी हमेशा 1 है । इससे इस बात का पालन किया जाता है कि टेलीिनिट को कॉल करने के बजाए शॉर्टकट के बजाय इनिट का उपयोग भी कर सकते हैं।