में इस सभी लिनक्स प्रक्रियाओं के माता-पिता हैं। जब कंप्यूटर बूट हो जाता है तब यह शुरू करने वाली पहली प्रक्रिया है, और जब तक सिस्टम बंद नहीं हो जाता तब तक यह चलता है। यह अन्य सभी प्रक्रियाओं का पूर्वज है।
इसकी प्राथमिक भूमिका फाइल / etc / inittab में संग्रहीत स्क्रिप्ट से प्रक्रियाएं बनाना है। यह फ़ाइल आम तौर पर उन प्रविष्टियों को संग्रहीत करती है जो उपयोगकर्ता को लॉग इन करने वाली प्रत्येक पंक्ति पर गेट्स को प्राप्त करने का कारण बनती हैं। यह किसी विशेष सिस्टम द्वारा आवश्यक स्वायत्त प्रक्रियाओं को भी नियंत्रित करता है।
रनलेबल
ए रनलेवल सिस्टम की एक सॉफ्टवेयर कॉन्फ़िगरेशन है जो प्रक्रियाओं के केवल चयनित समूह को निष्पादित करने की अनुमति देती है। इन रनलेवलों में से प्रत्येक के लिए इनिट द्वारा उत्पन्न प्रक्रियाओं को / etc / inittab फ़ाइल में परिभाषित किया गया है। इनिट आठ रनलेवल में से एक में हो सकता है: 0 से 6 और एस या एस। रनलेवल को एक विशेषाधिकार प्राप्त उपयोगकर्ता टेलीिनिट चलाकर बदला जाता है, जो इनिट को उचित सिग्नल भेजता है, यह बताता है कि कौन सा रनलेवल बदलना है।
रनलेवल 0, 1, और 6 आरक्षित हैं। रनलेवल 0 का उपयोग सिस्टम को रोकने के लिए किया जाता है, सिस्टम को रीबूट करने के लिए रनलेवल 6 का उपयोग किया जाता है, और रनलेवल 1 का उपयोग सिस्टम को एकल-उपयोगकर्ता मोड में लाने के लिए किया जाता है। रनलेवल एस का उपयोग सीधे नहीं किया जाना चाहिए बल्कि रनलेवल 1 दर्ज करते समय निष्पादित स्क्रिप्ट द्वारा किया जाता है।
रनलेवल 7 से 9 मान्य भी हैं, हालांकि अच्छी तरह से प्रलेखित नहीं है क्योंकि "पारंपरिक" यूनिक्स वेरिएंट उनका उपयोग नहीं करते हैं। Runlevels एस और एस एक ही हैं। आंतरिक रूप से, वे एक ही रनलेवल के लिए उपनाम हैं।
बूटिंग
इनिट को कर्नेल बूट अनुक्रम के अंतिम चरण के रूप में बुलाया जाने के बाद, यह फ़ाइल / etc / inittab को देखने के लिए देखता है कि क्या प्रकार की प्रविष्टि है या नहीं initdefault । Initdefault प्रविष्टि सिस्टम के प्रारंभिक रनलेवल निर्धारित करता है। अगर ऐसी कोई प्रविष्टि नहीं है (या नहीं / etc / inittab बिल्कुल), सिस्टम कंसोल पर एक रनलेवल दर्ज किया जाना चाहिए।
रनलेवल एस या एस सिस्टम को एकल-उपयोगकर्ता मोड में ले जाता है और उसे / etc / inittab फ़ाइल की आवश्यकता नहीं होती है। एकल-उपयोगकर्ता मोड में, / dev / console पर रूट खोल खोला जाता है।
एकल-उपयोगकर्ता मोड में प्रवेश करते समय, init /etc/ioctl.save से कंसोल के ioctl राज्यों को पढ़ता है। यदि यह फ़ाइल मौजूद नहीं है, तो init 9600 बॉड और क्लॉक सेटिंग्स के साथ लाइन शुरू करता है। जब init एकल-उपयोगकर्ता मोड छोड़ देता है, तो यह इस फ़ाइल में कंसोल की ioctl सेटिंग्स संग्रहीत करता है ताकि यह उन्हें अगले एकल-उपयोगकर्ता सत्र के लिए पुन: उपयोग कर सके।
पहली बार बहुउद्देशीय मोड में प्रवेश करते समय, इनिट बूट और बूटवेट प्रविष्टियों को निष्पादित करता है ताकि उपयोगकर्ता सिस्टम लॉग इन करने से पहले फ़ाइल सिस्टम को माउंट कर सकें। फिर, रनलेवल से मेल खाने वाली सभी प्रविष्टियां संसाधित की जाती हैं।
एक नई प्रक्रिया शुरू करते समय, इनिट पहले जांच करता है कि फाइल / etc / initscript मौजूद है या नहीं। यदि ऐसा होता है, तो यह प्रक्रिया शुरू करने के लिए इस स्क्रिप्ट का उपयोग करता है।
प्रत्येक बार जब कोई बच्चा समाप्त हो जाता है, तो इनिट इस तथ्य को रिकॉर्ड करता है और कारण यह / var / run / utmp और / var / log / wtmp में मर जाता है, बशर्ते ये फ़ाइलें मौजूद हों।
रनलेवल बदलना
यह निर्दिष्ट सभी प्रक्रियाओं को उत्पन्न करने के बाद, इनिट अपनी मूल प्रक्रियाओं में से एक के लिए मरने के लिए प्रतीक्षा करता है, एक पावरफेल सिग्नल, या जब तक यह सिस्टम के रनलेवल को बदलने के लिए टेलीिनिट द्वारा संकेतित नहीं किया जाता है। जब इन तीन स्थितियों में से एक होता है, तो यह / etc / inittab फ़ाइल की पुन: जांच करता है। किसी भी समय इस फ़ाइल में नई प्रविष्टियां जोड़ दी जा सकती हैं। हालांकि, अभी भी उपरोक्त तीन स्थितियों में से एक के लिए इंतजार कर रहा है। तत्काल प्रतिक्रिया प्रदान करने के लिए, टेलीिनिट क्यू या क्यू कमांड / etc / inittab फ़ाइल को फिर से जांचने के लिए इनिट को जगा सकता है।
यदि इनिट एकल-उपयोगकर्ता मोड में नहीं है और पावरफेल सिग्नल (एसआईजीपीडब्ल्यूआर) प्राप्त करता है, तो यह फ़ाइल / etc / powerstatus को पढ़ता है। फिर यह इस फ़ाइल की सामग्री के आधार पर एक कमांड शुरू करता है:
- एफ (AIL): बिजली असफल हो रही है, यूपीएस बिजली प्रदान कर रहा है। पावरवेट और पावरफेल प्रविष्टियों का निष्पादन करें।
- ठीक): शक्ति बहाल कर दी गई है, powerokwait प्रविष्टियों निष्पादित करें।
- एल (ओ): बिजली असफल हो रही है, और यूपीएस की बैटरी कम है। Powerfailnow प्रविष्टियों का निष्पादन करें।
यदि / etc / powerstatus मौजूद नहीं है या F, O, या L अक्षरों के अलावा कुछ भी शामिल है, तो इटिट व्यवहार करता है जैसे कि यह पत्र एफ को पढ़ता है।
एसआईजीपीडब्लूआर और / आदि / पावरस्टैटस का उपयोग निराश है। कोई भी जो इनिट के साथ बातचीत करना चाहता है उसे / dev / initctl नियंत्रण चैनल का उपयोग करना चाहिए।
जब इनिट से रनलेवल को बदलने का अनुरोध किया जाता है, तो यह नए रनलेवल में अपरिभाषित सभी प्रक्रियाओं के लिए चेतावनी संकेत SIGTERM भेजता है। यह सिग्कील सिग्नल का उपयोग करके इन प्रक्रियाओं को जबरन समाप्त करने से पहले पांच सेकंड तक प्रतीक्षा करता है। ध्यान दें कि इनिट मानता है कि ये सभी प्रक्रियाएं और उनके वंशज एक ही प्रक्रिया समूह में रहते हैं जो मूल रूप से उनके लिए बनाई गई थी। यदि कोई प्रक्रिया इसकी प्रक्रिया समूह संबद्धता को बदलती है, तो इन संकेतों को प्राप्त नहीं होता है। ऐसी प्रक्रियाओं को अलग से समाप्त करने की आवश्यकता है।
Telinit
टेलिनिट / sbin / init से जुड़ा हुआ है। उपयुक्त कार्रवाई करने के लिए इन-कैरेक्टर तर्क और सिग्नल इनिट लेता है। निम्नलिखित तर्क टेलीिनिट के निर्देश के रूप में कार्य करते हैं:
- 0, 1, 2, 3, 4, 5, या 6: निर्दिष्ट रन स्तर पर स्विच करने के लिए इनिट को बताएं।
- ए, बी, सी: इनिट को केवल उन / etc / inittab फ़ाइल प्रविष्टियों को संसाधित करने के लिए बताएं जिसमें रनलेवल ए, बी, या सी है।
- क्यू या क्यू: / Etc / inittab फ़ाइल को दोबारा जांचने के लिए इनिट को बताएं।
- एस या एस: सिंगल-उपयोगकर्ता मोड पर स्विच करने के लिए इनिट को बताएं।
- यू या यू: खुद को फिर से निष्पादित करने के लिए init बताएं (राज्य को संरक्षित)। / Etc / inittab फ़ाइल की कोई पुन: जांच नहीं होती है। रनलेवल एस, एस, 1, 2, 3, 4, या 5 होना चाहिए; अन्यथा, अनुरोध चुपचाप अनदेखा किया जाता है।
टेलीिनिट यह भी बता सकता है कि सिगटरएम और सिग्कील सिग्नल प्रक्रियाओं को भेजने के बीच कितनी देर तक इंतजार करना चाहिए। डिफ़ॉल्ट पांच सेकंड है, लेकिन इस मान को बदला जा सकता है -टी सेकेंड विकल्प।
टेलीिनिट केवल उचित विशेषाधिकार वाले उपयोगकर्ताओं द्वारा ही बुलाया जा सकता है।
इनिट बाइनरी जांच करता है कि क्या यह अपनी प्रक्रिया आईडी देखकर इनिट या टेलिनिट है। असली इनिट की प्रक्रिया आईडी हमेशा होती है 1. इससे, यह टेलीिनिट को कॉल करने के बजाय, एक व्यक्ति शॉर्टकट के रूप में इनिट का उपयोग कर सकता है।




