லினக்ஸில் Init கட்டளை எவ்வாறு பயன்படுத்துவது

Init அனைத்து செயல்களின் பெற்றோர். கோப்பு / etc / inittab இல் சேமிக்கப்பட்ட ஒரு ஸ்கிரிப்ட்டிலிருந்து செயலாக்கங்களை உருவாக்குவதே இதன் முக்கிய நோக்கம் ( இன்ஐபப் (5) பார்க்கவும். இந்த கோப்பு வழக்கமாக உள்ளீடுகளை கொண்டிருக்கும், ஒவ்வொரு பயனாளருக்கும் உள்நுழைந்திருக்கும் ஒவ்வொரு வரியும் விலகும் . இது எந்த குறிப்பிட்ட முறையிலும் தேவைப்படும் தன்னியக்க செயல்முறைகளையும் கட்டுப்படுத்துகிறது.

இயங்குநிலைகளை

ஒரு இயங்குநிலை என்பது கணினியின் மென்பொருள் கட்டமைப்பு ஆகும், இது தேர்ந்தெடுக்கப்பட்ட ஒரு செயல்முறை குழுமம் மட்டுமே அனுமதிக்கிறது. இந்த runlevels ஒவ்வொன்றிற்கும் init மூலம் உருவாக்கப்பட்ட செயல்முறைகள் / etc / inittab கோப்பில் வரையறுக்கப்படுகின்றன. Init ஆனது எட்டு ரன்லெல்லில் ஒன்று: 0-6 மற்றும் S அல்லது s . Runlevel ஒரு சிறப்பு பயனாளர் ரன் telinit மூலம் மாறிவிட்டது, இது init செய்ய பொருத்தமான சமிக்ஞைகளை அனுப்புகிறது, இது runlevel மாற்ற வேண்டும் என்று.

Runlevels 0 , 1 மற்றும் 6 ஆகியவை ஒதுக்கப்பட்டுள்ளன. கணினியை நிறுத்துவதற்கு ரன்ட்வெல் 0 பயன்படுத்தப்படுகிறது, கணினியை மீண்டும் துவக்குவதற்கு runlevel 6 பயன்படுகிறது, மேலும் runlevel 1 ஆனது கணினியை ஒற்றை பயனர் பயன்முறையில் பெற பயன்படுத்தப்படுகிறது. ரன்ல்லேல் எஸ் உண்மையில் நேரடியாக பயன்படுத்தப்பட வேண்டியதல்ல, ஆனால் ஓட்டல்வெல்லுக்குள் நுழையும் போது செயல்படுத்தப்படும் ஸ்கிரிப்ட்ஸ்களுக்கு அதிகமானவை. இதைப் பற்றி மேலும் தகவலுக்கு, பணிநிறுத்தம் (8) மற்றும் இன்ட்டபப் (5) ஆகியவற்றைப் பார்க்கவும்.

இயங்குதளம் 7-9 கூட உண்மையில் ஆவணப்படுத்தப்படவில்லை என்றாலும், செல்லுபடியாகும். ஏனென்றால் "பாரம்பரிய" யுனிக்ஸ் வகைகள் அவற்றைப் பயன்படுத்துவதில்லை. நீங்கள் ஆர்வமாக இருக்கிறீர்கள் என்றால், Runlevels S மற்றும் s உண்மையில் அதே உள்ளன. உள்நாட்டில் அவர்கள் ஒரே ஓட்டப்பந்தயத்துக்கான மாற்றுப்பெயர்கள்.

துவக்குதல்

கர்னல் பூட் காட்சியின் கடைசி படி என init பின்னர் செயல்படுத்தப்படுகிறது, அது initdefault வகை உள்ளீடு இருந்தால் பார்க்க / etc / inittab கோப்பை பார்க்கிறது (see inittab (5)). Initdefault நுழைவு கணினியின் தொடக்க ரன்ட்லேவை தீர்மானிக்கிறது. அத்தகைய நுழைவு இல்லை (அல்லது இல்லை / etc / inittab அனைத்திலும்), ஒரு runlevel கணினி பணியகத்தில் உள்ளிட வேண்டும்.

இயங்குநிலை S அல்லது s ஐ ஒற்றை பயனர் பயன்முறையில் கொண்டு, ஒரு / etc / inittab கோப்பு தேவையில்லை. ஒற்றை பயனர் முறையில், / dev / console இல் ஒரு ரூட் ஷெல் திறக்கப்படுகிறது.

ஒற்றை பயனர் பயன்முறையை உள்ளிடுகையில், init பணியகத்தின் ioctl (2) மாநிலங்களை /etc/ioctl.save இலிருந்து படிக்கிறது . இந்த கோப்பு இல்லையெனில், init 9600 பாட் மற்றும் CLOCAL அமைப்புகளுடன் வரி துவக்கப்படுகிறது. Init ஒற்றை பயனர் பயன்முறையை விட்டுவிட்டால், இந்த கோப்பில் உள்ள பணியகத்தின் ioctl அமைப்புகளை சேமித்து, அடுத்த ஒற்றை பயனர் அமர்வுக்கு அவற்றை மீண்டும் பயன்படுத்தலாம்.

பல முறை பயனர் முறைமையில் நுழைகையில், init பயனர்கள் உள்நுழைவதற்கு முன் கோப்பு முறைமைகள் மவுன்ட் செய்ய அனுமதிக்க துவக்க மற்றும் துவக்க உள்ளீடுகளை செய்கிறது. பின்னர் runlevel உடன் பொருந்தும் அனைத்து உள்ளீடுகளும் செயலாக்கப்படுகின்றன.

ஒரு புதிய செயல்முறையை துவக்கும் போது, init முதல் கோப்பு / etc / initscript உள்ளது என்பதை சரிபார்க்கிறது. அவ்வாறு செய்தால், செயல்முறையைத் தொடங்க இந்த ஸ்கிரிப்டைப் பயன்படுத்துகிறது.

ஒவ்வொரு முறையும் ஒரு குழந்தை முடிவடைகிறது, இது உண்மையில் / var / run / utmp மற்றும் / var / log / wtmp இல் இறந்த காரணத்தால், இந்த கோப்புகள் இருப்பதை உறுதிப்படுத்துகிறது.

Runlevels ஐ மாற்றுகிறது

குறிப்பிட்ட அனைத்து செயல்முறைகளையும் இது உருவாக்கிய பின்னர், இன்ஐடி அதன் இறந்த செயல்முறைகளில் ஒன்று இறக்க, ஒரு சக்திவாய்ந்த சமிக்ஞைக்காக காத்திருக்கிறது, அல்லது அது கணினியின் ரன்லெலை மாற்றுவதற்கு telinit மூலம் சமிக்ஞை செய்யப்படும் வரை காத்திருக்கிறது . மேலே மூன்று நிபந்தனைகளில் ஒன்று ஏற்படும் போது, ​​இது / etc / inittab கோப்பை மீண்டும் பரிசோதிக்கிறது. புதிய உள்ளீடுகள் இந்த கோப்பில் எந்த நேரத்திலும் சேர்க்கப்படும். எனினும், init இன்னும் மேலே மூன்று நிலைமைகளில் ஒன்றுக்காக காத்திருக்கிறது. ஒரு உடனடி பதிலை வழங்க, telinit Q அல்லது q கட்டளையை / etc / inittab கோப்பை மீண்டும் பரிசோதிப்பதற்கான init எழுப்புகிறது.

Init ஒற்றை பயனர் பயன்முறையில் இல்லை மற்றும் ஒரு powerfail சமிக்ஞையை (SIGPWR) பெறுகிறது என்றால், அது கோப்பினை / etc / powerstatus . இந்த கோப்பின் உள்ளடக்கங்களை அடிப்படையாகக் கொண்ட கட்டளை தொடங்குகிறது:

எஃப் (ஏஐஎல்)

மின்சாரம் தோல்வி, UPS அதிகாரத்தை வழங்குகிறது. Powerwait மற்றும் powerfail உள்ளீடுகளை இயக்கவும்.

சரி)

சக்தி மீட்டமைக்கப்பட்டு, அதிகாரவழி உள்ளீடுகளை இயக்கவும்.

குறைந்த)

மின்சாரம் தவறிவிட்டது மற்றும் யுபிஎஸ் குறைந்த பேட்டரி கொண்டிருக்கிறது. Powerfailnow உள்ளீடுகளை இயக்கவும்.

/ Etc / powerstatus இல்லையென்றால் அல்லது வேறு ஏதேனும் இருந்தால், F , O அல்லது L இன் கடிதங்கள் எஃப் .

SIGPWR மற்றும் / etc / powerstatus இன் பயன்பாடு ஊக்கமளிக்கிறது. Init உடன் தொடர்பு கொள்ள விரும்பும் ஒருவர் / dev / initctl கட்டுப்பாட்டு சேனலைப் பயன்படுத்த வேண்டும் - sysvinit தொகுப்பின் ஆதாரக் குறியீட்டை இதைப் பற்றி மேலும் ஆவணங்களுக்கு பார்க்கவும்.

Runlevel ஐ மாற்றுவதற்கு init கோரிய போது, ​​இது புதிய runlevel இல் வரையறுக்கப்படாத அனைத்து செயல்களுக்கும் எச்சரிக்கை சமிக்ஞை SIGTERM ஐ அனுப்புகிறது. இது SIGKILL சமிக்ஞை வழியாக இந்த செயல்முறைகளை கட்டாயமாக முடக்குவதற்கு 5 விநாடிகள் காத்திருக்கிறது. இந்த செயல்முறைகள் அனைத்தும் (மற்றும் அவர்களின் வழித்தோன்றல்கள்) ஆரம்பத்தில் உருவாக்கிய அதே செயல்முறை குழுவில் இருக்கும் என்று init கருதுகிறது. எந்தவொரு செயலாக்கமும் அதன் செயல்முறை குழுவை மாற்றியமைத்தால், இந்த சமிக்ஞைகளைப் பெறாது. இத்தகைய செயல்முறைகள் தனியாக நிறுத்தப்பட வேண்டும்.

Telinit

/ sbin / telinit / sbin / init உடன் இணைக்கப்பட்டுள்ளது. அதற்கான நடவடிக்கைகளை மேற்கொள்வதற்கு இது ஒரு எழுத்துக்குறி வாதம் மற்றும் சமிக்ஞைகள் init . பின்வரும் வாதங்கள் telinit கட்டளைகளாக பணிபுரியும் :

0 , 1 , 2 , 3 , 4 , 5 அல்லது 6

குறிப்பிட்ட ரன் நிலைக்கு மாறுவதற்கு init ஐ சொல்லவும்.

a , b , c

runlevel a , b அல்லது c ஐ கொண்டிருக்கும் / etc / inittab கோப்பு உள்ளீடுகளை மட்டுமே செயல்படுத்த Init சொல்லவும்.

Q அல்லது q

/ etc / inittab கோப்பை மறு ஆய்வு செய்ய init சொல்லவும்.

எஸ் அல்லது கள்

ஒற்றை பயனர் பயன்முறையில் மாறும்படி init சொல்லவும்.

U அல்லது u

மீண்டும் செயல்படுத்துவதற்கு (மாநிலத்தை காப்பாற்றுதல்) init சொல்லவும். / Etc / inittab கோப்பின் மறு ஆய்வு செய்யப்படும். ரன் நிலை Ss12345 ஒன்றில் இருக்க வேண்டும், இல்லையெனில் கோரிக்கை நிராகரிக்கப்படும்.

SIGTERM மற்றும் SIGKILL சமிக்ஞைகளை அனுப்புவதன் இடையே எவ்வளவு காலம் காத்திருக்க வேண்டும் என்பதில் telinit init ஐயும் சொல்ல முடியும். இயல்புநிலை 5 விநாடிகள் ஆகும், ஆனால் இது -t sec விருப்பத்துடன் இதை மாற்றலாம்.

தகுந்த சலுகைகளுடன் பயனர்களால் மட்டுமே telinit செயல்படுத்தப்பட முடியும்.

Init பைனரி காசோலைகள் அதன் செயல் அடையாள அட்டையைப் பார்க்கும்போது init அல்லது telinit என்றால்; உண்மையான init இன் செயலாக்க ஐடி எப்போதும் 1 ஆகும் . இதிலிருந்து, டெலினைட்டுக்கு பதிலாக, ஒரு குறுக்குவழியாக, பதிலாக init ஐ பயன்படுத்தலாம்.