ലിനക്സിൽ Init കമാൻഡ് എങ്ങനെയാണ് ഉപയോഗിക്കുക

Init എല്ലാ പ്രക്രിയകളുടെയും മാതാവാണ്. / Etc / inittab ഫയലിൽ സൂക്ഷിച്ചിരിക്കുന്ന ഒരു സ്ക്രിപ്റ്റിൽ നിന്നും പ്രോസസ് തയ്യാറാക്കുന്നത് അതിന്റെ പ്രധാന പങ്ക് ( inittab (5) കാണുക). ഈ ഫയലിൽ സാധാരണയുള്ള ഉപയോക്താക്കൾ ഓരോ വരിയിലും ലോഗ് ഇൻ ചെയ്യാനുള്ള ഗണിതാവിഷയങ്ങൾക്കുള്ള init കാരണമാകുന്ന എൻട്രികൾ ഉണ്ട്. ഇത് ഏതെങ്കിലും പ്രത്യേക സിസ്റ്റം ആവശ്യമുള്ള സ്വയം പ്രവർത്തിത പ്രക്രിയകളും നിയന്ത്രിക്കുന്നു.

റണ്ലവലുകള്

ഒരു റൺലവൽ എന്നത് ഒരു കൂട്ടം പ്രക്രിയകളുടെ കൂട്ടം മാത്രമേയുള്ളൂ സിസ്റ്റം അനുവദിക്കുന്ന ഒരു സോഫ്റ്റ്വെയർ കോൺഫിഗറേഷൻ. ഈ റൺലവലുകൾ ഓരോന്നും init മുഖേനയുള്ള പ്റക്റിയകൾ / etc / inittab ഫയലിൽ നിഷ്കർഷിച്ചിരിയ്ക്കുന്നു. എട്ടിന്റെ എട്ട് റൺലവലുകളിൽ ഒന്ന്: 0-6 , S അല്ലെങ്കിൽ s . റോൾലെവൽ ഒരു പ്രത്യേക ഉപയോക്താവിൻറെ റൺ ടെലവിറ്റിനൊപ്പം മാറ്റുന്നു , ഇത് init ലേക്ക് ഉചിതമായ സിഗ്നലുകൾ അയയ്ക്കുന്നു.

റൺലവലുകളും 0 , 1 , 6 എന്നിവയും റിസർവ്വ് ചെയ്തിരിക്കുന്നു. സിസ്റ്റം ഹാറ്ഡ് ചെയ്യുന്നതിന് റണ്ലവല് 0 ഉപയോഗിക്കുന്നു, സിസ്റ്റം റീബൂട്ട് ചെയ്യുന്നതിനായി റണ്ലെവല് 6 ഉപയോഗിക്കുന്നു, സിസ്റ്റം സിംഗിള് യൂസറ് മോഡായി ലഭ്യമാക്കുന്നതിന് റണ്ലവല് 1 ഉപയോഗിക്കുന്നു. റൺലവൽ എസ് നേരിട്ട് ഉപയോഗിയ്ക്കുവാൻ ഉദ്ദേശിച്ചല്ല, പക്ഷേ റൺലവൽ എന്റർ ചെയ്യുമ്പോൾ എക്സിക്യൂട്ട് ചെയ്യുന്ന സ്ക്രിപ്റ്റുകൾക്കു് കൂടുതൽ. ഇതു് സംബന്ധിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്കായി, shutdown (8), inittab (5) എന്നീ മാൻപേജുകൾ കാണുക.

റണ്ണിംഗ് വേളകൾ 7-9 സാധുവാണെങ്കിലും യഥാർത്ഥത്തിൽ രേഖപ്പെടുത്തപ്പെട്ടിട്ടില്ല. "പരമ്പരാഗതമായ" യുണിക്സ് വകഭേദങ്ങൾ അവ ഉപയോഗിക്കാത്തതിനാലാണിത്. നിങ്ങൾ ജിജ്ഞാസുണ്ടെങ്കിൽ റൺലവൽ S ഉം s ഉം യഥാർഥത്തിൽ തന്നെയായിരിക്കും. അവ ഒരേ റൺലവലിലേയ്ക്കായി അവ്യക്തമാണ്.

ബൂട്ട് ചെയ്യുന്നു

Init- നു് ശേഷം കേർണൽ ബൂട്ട് അനുരണത്തിൻറെ അവസാനത്തേതായി ഇൻവോക്കു് ലഭ്യമാക്കിയാൽ, initdefault -യുടെ ഒരു എൻട്രി ഉണ്ടോ എന്ന് പരിശോധിക്കുന്നതിനായി ഫയൽ / etc / inittab കാണുക. ( Inittab (5) കാണുക). Initdefault എൻട്രി സിസ്റ്റത്തിന്റെ പ്രാരംഭ റണ്ലവല് തീരുമാനിക്കുന്നു. ഇങ്ങനെ ഒരു എൻട്രി ഇല്ലെങ്കിൽ (അല്ലെങ്കിൽ / etc / inittab ഒന്നും ഇല്ല), സിസ്റ്റം കൺസോളിൽ ഒരു റൺലവൽ നൽകേണ്ടതാണ്.

റൺലവൽ എസ് അല്ലെങ്കിൽ s സിംഗിൾ യൂസർ മോഡിലേക്ക് കൊണ്ടു് വരുന്നു കൂടാതെ / etc / inittab ഫയൽ ആവശ്യമില്ല. സിംഗിൾ യൂസർ മോഡിൽ, / dev / കൺസോളിൽ റൂട്ട് ഷെൽ തുറക്കുക.

സിംഗിൾ യൂസർ മോഡിൽ പ്രവേശിക്കുന്പോൾ, /etc/ioctl.save -ൽ കൺസോളിലെ ioctl (2) സ്റ്റേറ്റുകൾ init ലഭ്യമാക്കുന്നു . ഈ ഫയൽ നിലവിലില്ലങ്കിൽ, init 9600 baud- ലും CLOCAL സജ്ജീകരണങ്ങളുമായി ലൈൻ ആരംഭിക്കുന്നു. Init സിംഗിൾ യൂസർ മോഡ് ഉപേക്ഷിക്കുമ്പോൾ, ഈ ഫയലിൽ കൺസോൾ ന്റെ ioctl സജ്ജീകരണങ്ങൾ സംഭരിക്കുന്നു, അതിനാൽ അടുത്ത സിംഗിൾ-യൂസർ സെഷനിൽ അവയെ വീണ്ടും ഉപയോഗിക്കാം.

ഒന്നിലധികം ഉപയോക്താവിനുള്ള മോഡിൽ പ്രവേശിയ്ക്കുമ്പോൾ, ഉപയോക്താക്കൾക്കു് പ്രവേശിയ്ക്കുന്നതിനു് മുമ്പു് ഫയൽ സിസ്റ്റങ്ങൾ മൌണ്ട് ചെയ്യുവാൻ അനുവദിയ്ക്കുന്നതിനായി init ബൂട്ട് , ബൂട്ട്വോട്ട് എൻട്രികൾ ചെയ്യുന്നു. പിന്നീട് റൺലവൽ പൊരുത്തപ്പെടുത്തുന്ന എല്ലാ എൻട്രികളും പ്രക്രിയപ്പെടുത്തിയിരിയ്ക്കുന്നു.

ഒരു പുതിയ പ്രക്രിയ തുടങ്ങുന്പോൾ, / etc / initscript നിലവിലുണ്ടോ എന്നു് init ആദ്യം പരിശോധിക്കുന്നു. അങ്ങനെ ചെയ്താൽ, അത് പ്രോസസ്സ് ആരംഭിക്കുന്നതിന് ഈ സ്ക്രിപ്റ്റ് ഉപയോഗപ്പെടുത്തുന്നു.

ഓരോ തവണയും ഒരു കുട്ടിയെ ഇല്ലാതാക്കുമ്പോൾ, init രേഖകൾ യഥാറ്ത്ഥം / var / run / utmp , / var / log / wtmp ൽ സംഭവിച്ചതിന്റെ കാരണം , ഈ ഫയലുകൾ നിലവിലുണ്ടായിരുന്നു.

റൺലവലുകൾ മാറ്റുക

വ്യക്തമാക്കിയ എല്ലാ പ്രക്രിയകളും ഉണ്ടാക്കിയ ശേഷം, init അതിന്റെ പാരമ്പര്യ പ്രക്രിയകളിൽ ഒന്നിനും മരിക്കാനും, ഒരു powerfail സിഗ്നലിനും, അല്ലെങ്കിൽ സിസ്റ്റത്തിന്റെ റൺലവൽ മാറ്റാൻ telinit വഴി സൂചന നൽകുന്നതുവരെ കാത്തിരിക്കുകയും ചെയ്യുന്നു. മുകളിൽ പറഞ്ഞിരിക്കുന്ന മൂന്ന് സാഹചര്യങ്ങളിൽ ഒന്ന് സംഭവിച്ചാൽ, അത് / etc / inittab ഫയൽ വീണ്ടും പരിശോധിക്കുന്നു. പുതിയ എൻട്രികൾ ഏത് സമയത്തും ഈ ഫയലിൽ ചേർക്കാം. എന്നിരുന്നാലും, init ഇതാണ് മുകളിൽ വരുന്ന മൂന്ന് വ്യവസ്ഥകളിൽ ഒന്ന് കാത്തിരിക്കുന്നു. ഒരു തൽക്ഷണ മറുപടി നൽകുന്നതിനായി, ടെലീനറ്റ് ക്യൂ അല്ലെങ്കിൽ q കമാൻഡുകൾ / etc / inittab ഫയൽ വീണ്ടും പരിശോധിക്കുന്നതിനായി ഇനിഷ്യേറ്റിവയ്ക്കാം .

Init സിംഗിൾ യൂസർ മോഡിൽ അല്ലങ്കിൽ ഒരു powerfail സിഗ്നൽ (SIGPWR) ലഭ്യമാക്കിയാൽ, അത് ഫയൽ / etc / powerstatus വായിക്കുന്നു. ഇത് പിന്നീട് ഈ ഫയലിന്റെ ഉള്ളടക്കം അടിസ്ഥാനമാക്കിയുള്ള ഒരു കമാൻഡ് ആരംഭിക്കുന്നു:

F (AIL)

പവർ പരാജയം, യു.പി.എസ് അധികാരം നൽകുന്നു. Powerwait , powerfail എൻട്രികൾ നിർവ്വഹിക്കുക.

ശരി)

ശക്തി പുനഃസ്ഥാപിച്ചു, powerokwait എൻട്രികൾ പ്രവർത്തിപ്പിക്കുക.

L (OW)

ഊർജ്ജം നഷ്ടപ്പെടുന്നതും യുപിഎസ് കുറഞ്ഞ ബാറ്ററി ഉള്ളതുമാണ്. Powerfailnow എൻട്രികൾ നടപ്പിലാക്കുക.

/ Etc / powerstatus നിലവിലില്ല അല്ലെങ്കിൽ മറ്റെന്തെങ്കിലും ഉണ്ടെങ്കിൽ, F , O അല്ലെങ്കിൽ L എന്നീ അക്ഷരങ്ങൾ F ലെ F എഴുതുന്നതുപോലെ പ്രവർത്തിക്കും.

SIGPWR ന്റെ ഉപയോഗം / etc / powerstatus നിരുത്സാഹപ്പെടുത്തുന്നു. Init- മായി ആശയവിനിമയം നടത്തുന്ന ആരോ / dev / initctl കണ്ട്രോൾ ചാനൽ ഉപയോഗിയ്ക്കണം - sysvinit പാക്കേജിന്റെ സോഴ്സ് കോഡ് ഇതു് സംബന്ധിച്ചുള്ള കൂടുതൽ വിവരണക്കുറിപ്പു് കാണുക.

റൺലവൽ മാറ്റുന്നതിനായി init ആവശ്യപ്പെട്ടാൽ, പുതിയ റൺലവലിൽ വ്യക്തമാക്കാത്ത എല്ലാ പ്രക്രിയകൾക്കും SIGTERM മുന്നറിയിപ്പു് സിഗ്നൽ അയയ്ക്കുന്നു. ഇതിന് SIGKILL സിഗ്നലിനാൽ ഈ പ്രക്രിയകളെ അടച്ചുപൂട്ടുന്നതിനു 5 സെക്കൻഡ് കാത്തിരിക്കുന്നു. ഈ പ്രക്രിയകളെല്ലാം (അവരുടെ സന്തതിപരമ്പര) യഥാർത്ഥത്തിൽ സൃഷ്ടിച്ച അതേ പ്രക്രിയഗ്രൂപ്പിൽ തന്നെ നിലനിൽക്കുന്നതാണെന്ന് init ഊഹിക്കുക. ഏതെങ്കിലും പ്രക്രിയ അതിന്റെ ഗ്രൂപ്പ് ഗ്രൂപ്പ് അംഗീകാരം മാറ്റിയാൽ ഈ സിഗ്നലുകൾ ലഭിക്കുകയില്ല. അത്തരം പ്രക്രിയകൾ വെവ്വേറെ അവസാനിപ്പിക്കേണ്ടതുണ്ട്.

ടെലിനിറ്റ്

/ sbin / telinit / sbin / init -ലേക്ക് ബന്ധിപ്പിച്ചിരിക്കുന്നു. ഉചിതമായ പ്രവർത്തനം നടത്താൻ ഇത് ഒറിജിനൽ ആർഗ്യുമെന്റ്, സിഗ്നലുകൾ init എന്നിവ എടുക്കുന്നു. താഴെ പറയുന്ന ആർഗ്യുമെന്റുകൾ ടെലവിറ്റിക്കുവേണ്ടി നിർദ്ദേശങ്ങൾ നൽകുന്നു:

0 , 1 , 2 , 3 , 4 , 5 അല്ലെങ്കിൽ 6

നിർദ്ദിഷ്ട റൺ നിലയിലേക്ക് മാറാൻ init പറയുക.

a , b , c

റൺലവൽ a , b അല്ലെങ്കിൽ c ഉള്ള ഉള്ള / etc / inittab ഫയൽ എൻട്രികളിൽ മാത്രം പ്രോസസ് ചെയ്യുന്നതിന് init എന്ന് പറയുന്നത്.

Q അല്ലെങ്കിൽ q

/ etc / inittab ഫയല് വീണ്ടും പരിശോധിക്കുന്നതിനായി init എന്ന് പറയുക.

S അല്ലെങ്കിൽ s

സിംഗിൾ യൂസർ മോഡിന് മാറുന്നതിന് init എന്ന് പറയുക.

യു അല്ലെങ്കിൽ യു

സ്വയം പ്രവർത്തിപ്പിക്കാൻ init പറയുക (സംസ്ഥാനം സംരക്ഷിക്കൽ). / Etc / inittab ഫയലിന്റെ വീണ്ടും പരിശോധിക്കുന്നതല്ല. റൺ നില Ss12345 ഒരെണ്ണമായിരിക്കണം , അല്ലെങ്കിൽ അഭ്യർത്ഥന നിശബ്ദമായി അവഗണിക്കും.

SIGTERM , SIGKILL സിഗ്നലുകൾ എന്നിവയെ എങ്ങനെയാണ് അയയ്ക്കുന്നതെന്ന് എത്ര സമയമെടുക്കുമ്പോഴും telinit init എന്ന് പറയാൻ കഴിയും. സ്വതവേയുള്ളതു് 5 സെക്കൻഡാണ്, പക്ഷേ ഇതു് -t sec ഐച്ഛികത്തിനൊപ്പം മാറ്റാം.

ഉചിതമായ ആനുകൂല്യങ്ങളുള്ള ഉപയോക്താക്കൾക്ക് മാത്രമേ ടെലിനിറ്റ് ഉപയോഗിക്കാവൂ.

Init ബൈനറി പരിശോധിൻറെ init അല്ലെങ്കിൽ telinit അതിന്റെ പ്രക്രിയ ഐഡി നോക്കിയാൽ പരിശോധിക്കുന്നു; യഥാർത്ഥ init ന്റെ പ്രോസസ്സ് ഐഡി എല്ലായ്പ്പോഴും 1 ആണ് . ഇതിൽ നിന്നും ടെലവിറ്റിനെ വിളിക്കുന്നതിനുപകരം ഒരു കുറുക്കുവഴിയായി പകരം ഉപയോഗിക്കാനുള്ള പറ്റാം .