लिनक्समधील Init कमांड कसे वापरावे

Init सर्व प्रक्रियांचे पालक आहे फाइल / etc / inittab मध्ये संग्रहित स्क्रिप्टमधून प्रक्रिया तयार करणे ही प्राथमिक भूमिका आहे ( inittab (5) पहा) या फाइलमध्ये सहसा नोंदी असतात ज्यामुळे वापरकर्त्यांनी प्रत्येक ओळीत गेटीला स्प्रॅन लावले असते जे वापरकर्त्यांना लॉग इन करू शकतात. तसेच कोणत्याही विशिष्ट प्रणालीद्वारे आवश्यक स्वायत्त प्रक्रिया नियंत्रित करते.

रनलेव्हल्स

रनलेव्हल सिस्टमची सॉफ्टवेअर संरचना आहे जे फक्त निवडलेल्या ग्रुप प्रोसेसचे अस्तित्व टिकवते. या प्रत्येक रनलेव्हलकरीता init द्वारे बनलेले कार्य / etc / inittab फाइलमध्ये वर्णन केले जाते. Init आठ रनलेवल्स् पैकी एक असू शकते: 0-6 आणि S किंवा s रनलेवल वापरुन विशेषाधिकृत वापरकर्ता रन टेलिनेट द्वारे बदलले जाते, जे init ला योग्य सिग्नल पाठविते, यास कोणत्या रनलेवल मध्ये बदल करायचे हे सांगते.

रनलेवल्स 0 , 1 , आणि 6 आरक्षित आहेत रनलेव्हल 0 याचा वापर यंत्रणा थांबविण्यासाठी केला जातो, रनलेवल 6 चा वापर प्रणाली रीबूट करण्यासाठी होतो, आणि रनलेवल 1 प्रणालीला सिंगल युजर मोडमध्ये आणण्यासाठी वापरले जाते. रनलेवल एस प्रत्यक्षरित्या वापरले जात नाही, परंतु रनलेवल 1 मध्ये प्रवेश करताना कार्यान्वित केलेल्या स्क्रिप्टसाठी अधिक. यावर अधिक माहितीसाठी, शटडाउन (8) आणि इनसेटब (5) साठीच्या मॅनपेजेस पहा.

रनलेवल्स 7-9 वैध आहेत, जरी खरोखर दस्तऐवजीकरण नसले तरी. याचे कारण असे की "पारंपारिक" युनिक्स व्हेरिएन्ट त्यांचा वापर करत नाहीत. जर आपण जिज्ञासू असाल, तर रनलेवल्स एस आणि एस खरोखरच समान आहेत. आंतरिकरित्या ते समान रनलेवलचे उपनाम आहेत.

बूटींग

Init ला कर्नल बूट क्रमवारीतील शेवटचे पाऊल म्हणून लागू केले गेल्यानंतर, फाइल / etc / inittab फाइलमध्ये शोधते आहे काय हे पाहण्यासाठी initdefault प्रकारचे प्रविष्टी आहे ( inittb (5) पहा) Initdefault नोंदणीमुळे प्रणालीचे प्रारंभिक रनलेवल निर्धारित होते. अशी अशी नोंद (किंवा नाही / etc / inittab सर्व) नसल्यास, रनलेव्हल सिस्टम कन्सोलमध्ये प्रविष्ट करणे आवश्यक आहे.

रनलेवल एस किंवा s प्रणालीस सिंगल युजर मोडमध्ये आणते आणि / etc / inittab फाइलची आवश्यकता नाही. सिंगल युजर मोडमध्ये, रूट शेल / dev / console वर उघडले जाते.

सिंगल युजर मोड प्रविष्ट करताना, init कंसोलची ioctl (2) स्टेटस /etc/ioctl.save पासून वाचते ही फाईल अस्तित्वात नसल्यास, init 9600 बॉडवर सुरू करते आणि CLOCAL सेटिंग्जसह. जेव्हा init सिंगल युजर मोड सोडते, तेव्हा ते कन्सोलच्या ioctl सेटिंग्ज या फाइलमध्ये साठवते जेणेकरून ते पुढील सिंगल-युजर सत्रासाठी ते पुन्हा वापरु शकतात.

प्रथमवेळी मल्टि-युजर मोडमध्ये प्रवेश करताना, init बूटबूटवाइट प्रविष्ट्या करतो जे वापरकर्त्यांना लॉग इन करण्यापूर्वी फाइल प्रणालीला आरोहित करण्यास परवानगी देते. नंतर रनलेवलची जुळणारी सर्व नोंदणी प्रक्रिया होते.

नवीन प्रक्रिया सुरू करताना, init प्रथम फाइल / etc / initscript अस्तित्वात आहे का ते तपासते. असे असल्यास, ही प्रक्रिया सुरू करण्यासाठी हे स्क्रिप्ट वापरते.

प्रत्येक वेळी एक मूल संपुष्टात येते, init रेकॉर्ड व खरं आणि / var / run / utmp/ var / log / wtmp येथे मरण पावले, तर या फाइल्स अस्तित्वात आहेत.

रनलेवल्स बदलत आहे

निर्देशीत केलेल्या सर्व प्रक्रियांचे स्पॅन केल्यानंतर, init त्याच्या वारसदार प्रक्रियेसाठी, एक पॉवरफिल सिग्नल मरेल, किंवा सिस्टमच्या रनलेव्हलमध्ये बदलण्यासाठी टेलिनीट द्वारे सिग्नल होईपर्यंत प्रतीक्षा करत आहे. जेव्हा वरील तीनपैकी एक परिस्थिती उद्भवते, तेव्हा ती / etc / inittab फाइलचे पुन्हा विश्लेषण करते. कोणत्याही वेळी या फाईलमध्ये नवीन प्रविष्ट्या जोडल्या जाऊ शकतात. तथापि, init अजूनही वरील तीन पैकी एका अटीची प्रतीक्षा करण्यास प्रतीक्षा करते. तात्कालीन प्रतिसाद पुरविण्याकरीता, telinit q किंवा q आदेश /etc/inittab फाइलचे पुनः विश्लेषण करण्यासाठी init जागे करू शकते.

Init सिंगल युजर मोडमध्ये नसल्यास आणि पावरफाईल सिग्नल (SIGPWR) प्राप्त केल्यास, तो / etc / powerstatus फाइल वाचतो. नंतर या फाइलमधील सामग्रीवर आधारित एक कमांड सुरू होते:

अपयशी)

वीज अपयशी आहे, यूपीएस शक्ती प्रदान करीत आहे. पॉवरवेट आणि पॉवरफिल प्रविष्ट्या चालवा .

ठीक आहे)

शक्ती पुनर्संचयित केले गेले आहे, पॉवरवॉच प्रविष्ट्या चालवा.

एल (OW)

वीज अपयशी आहे आणि यूपीएसमध्ये कमी बॅटरी आहे. पॉवरफिलहोल प्रविष्ट्या कार्यान्वित करा.

जर / etc / powerstatus अस्तित्वात नसेल किंवा अन्य काही असेल तर अक्षरे F , O किंवा L अक्षरे, जसे की पत्र F वाचले आहे.

SIGPWR आणि / etc / powerstatus चा वापर निर्मुलन केला जातो. Init सह संवाद साधण्याची इच्छा असणारे कोणीतरी / dev / initctl नियंत्रण वाहिनीचा वापर करा - याविषयी अधिक दस्तऐवजीकरणासाठी sysvinit संकुलचा स्त्रोत कोड पहा.

जेव्हा init मध्ये रनलेवल बदलण्याची विनंती केली जाते, तेव्हा ते नवीन रनलेव्हल मध्ये अपरिभाषित नसलेल्या सर्व प्रक्रियांकरिता चेतावणी सिग्नल SIGTERM पाठवते. हे SIGKILL सिग्नलद्वारे जबरदस्तीने ही प्रक्रिया बंद करण्यापूर्वी 5 सेकंदांपर्यंत प्रतीक्षा करते. लक्षात ठेवा init असे गृहीत करते की या सर्व प्रक्रिया (आणि त्यांचे वंशज) समान प्रक्रिया गटातच राहतात जे मूळतः त्यांच्यासाठी बनविले आहे. कोणतीही प्रक्रिया तिच्या प्रक्रिया गट संलग्नता बदलल्यास तो हे सिग्नल प्राप्त करणार नाही. अशा प्रक्रियांना स्वतंत्रपणे बंद करणे आवश्यक आहे.

टेलिनिट

/ sbin / telinit / sbin / init शी संबंधित आहे योग्य कृती करण्यासाठी हे एक-वर्णचे तर्क आणि सिग्नल इनिट घेते. पुढील वादविवाद टेलिनीटला दिशा दाखवितात :

0 , 1 , 2 , 3 , 4 , 5 किंवा 6

निर्दिष्ट रन लेव्हलवर स्विच करण्यासाठी init ला सांगा.

, बी , सी

रनटावे A , b किंवा c असलेल्या फक्त त्या / etc / inittab फाइल नोंदींवर प्रक्रिया करण्यास init ला सांगा.

प्रश्न किंवा q

/ etc / inittab फाइलचे पुनः विश्लेषण करण्यासाठी init ला सांगा

एस किंवा एस

सिंगल युजर मोडवर स्विच करण्यासाठी init ला सांगा.

यू किंवा यू

स्वतःला पुन्हा कार्यान्वित करण्यासाठी init ला सांगा (स्थिती राखण्यासाठी) नाही / etc / inittab फाइलचे पुन्हा तपासणी होत नाही. रन लेव्हल एसएस 12345 पैकी एक असावे , अन्यथा विनंतीकडे दुर्लक्ष केले जाईल.

टेलिनीट देखील ते SIGTERM आणि SIGKILL सिग्नल पाठवून प्रक्रिया दरम्यान किती प्रतीक्षा करावी हे init ला सांगू शकते. डीफॉल्ट 5 सेकंद आहे, परंतु हे -t सेक पर्याय वापरून बदलले जाऊ शकते.

टेलिनीट फक्त विशिष्ट विशेषाधिकार असलेल्या वापरकर्त्यांद्वारे लागू केले जाऊ शकते.

Init बायनरी तपासा ते init किंवा telinit असल्यास त्याचे प्रोसेस आयडी पाहून; वास्तविक init चे प्रक्रिया id नेहमी 1 आहे यावरून असे दिसेल की टेलिनिट कॉल करण्याऐवजी आपण शॉर्टकट म्हणून केवळ init चा वापर करू शकता.