Linux-дегі Init командасын қалай пайдалануға болады

Init - барлық процестердің ата-анасы. Оның басты рөлі / etc / inittab файлында сақталған сценарийлерді жасау болып табылады ( inittab (5) қараңыз). Бұл файлда әдетте пайдаланушылар кіруге болатын әрбір жолда init-ны шығаруды тудыратын жазбалар бар. Ол сондай-ақ кез-келген жүйенің талап ететін автономды процестерді бақылайды.

Жұмыс деңгейлері

Жұмыс деңгейлері - жүйенің процестердің тек таңдалған тобына ғана мүмкіндік беретін бағдарламалық жасақтама конфигурациясы. Осы іске қосу деңгейлерінің әрқайсысы үшін init арқылы шығарылған процестер / etc / inittab файлында анықталады. Init 8 деңгейдің біреуінде болуы мүмкін: 0-6 және S немесе s . Жұмыс деңгейінің деңгейі өзгерген кезде пайдаланушыны іске қосу арқылы өзгертуге болады, ол init деңгейіне сәйкес сигналдар жібереді.

0 , 1 және 6 жұмыс деңгейлері сақталған. Жүйенің жұмысын тоқтату үшін Runlevel 0 пайдаланылады, жүйенің жұмысын 6 деңгейде қайта жүктеу үшін пайдаланылады және 1-деңгейдің деңгейі бір пайдаланушының режиміне өту үшін пайдаланылады. Runlevel S шын мәнінде тікелей қолданылуға арналмаған, бірақ іске қосу деңгейіне кірген кезде орындалатын сценарийлерге арналған. Бұл туралы қосымша ақпарат алу үшін өшіру (8) және inittab (5) жұмыс жасайтын беттерін қараңыз.

7-9 регламенттері де жарамды, бірақ шын мәнінде құжатталмаған. Себебі «дәстүрлі» Unix нұсқалары оларды пайдаланбайды. Егер сізге қызығушылық танытсаңыз, S және s жұмыс деңгейлері бірдей. Ішкі деңгейде олар бір деңгейде жұмыс жасайды.

Жүктеу

Инициал ядро жүктеу реті соңғы қадамы ретінде шақырылғаннан кейін, init / init / init / inittab файлын initdefault түрінің жазбасы бар екенін көру үшін іздейді ( inittab (5) қараңыз). Initdefault жазбасы жүйенің бастапқы деңгейін анықтайды. Егер осындай жазбалар болмаса (немесе ешбір / etc / inittab мүлде жоқ болса), жүйе консолінде жұмыс деңгейін енгізу керек.

Runlevel S немесе s жүйені жалғыз пайдаланушы режиміне әкеледі және / etc / inittab файлын қажет етпейді. Бір пайдаланушы режимінде root қабығы / dev / console ішінде ашылады.

Бір пайдаланушы режиміне кіру кезінде, init /etc/ioctl.save ішінен консольдің ioctl (2) күйлерін оқиды . Егер бұл файл болмаса, init инициализирует желісін 9600 богада және CLOCAL параметрлері. Бір пайдаланушы режимін қалдырған кезде, ол осы файлдағы консольдің ioctl параметрлерін сақтайды, сондықтан оларды келесі бір пайдаланушы сеансына қайта пайдалануға болады.

Көптеген пайдаланушы режиміне бірінші рет кіргенде, init жүйелері пайдаланушыларға кіре алмай тұрып, файлдық жүйелердің орнатылуына рұқсат ету үшін жүктеу және бастауыш жазбаларын орындайды. Содан кейін іске қосу деңгейіне сәйкес келетін барлық жазбалар өңделеді.

Жаңа процесті бастағанда, init бастапқыда / etc / initscript файлының бар-жоғын тексереді. Егер солай болса, ол осы сценарийді процесті бастау үшін пайдаланады.

Бала әр тоқтағанда, бұл файлдар бар болған жағдайда, init / var / run / utmp және / var / log / wtmp ішінде қайтыс болған фактіні және себептерін жазады.

Рөлдік деңгейді өзгерту

Көрсетілген барлық процестерді орындағаннан кейін, init өзінің ұрпақ процестерінің біреуін өлшеу үшін күтеді, қуат сигналының сигналы немесе жүйенің жұмыс деңгейін өзгерту үшін telinit арқылы сигнал беріледі. Жоғарыдағы үш жағдайдың бірі орын алғанда, / etc / inittab файлын қайта қарастырады. Жаңа файлдарды осы файлға кез келген уақытта қосуға болады. Дегенмен, init әлі де жоғарыда аталған үш шарттың бірін күтеді. Кездейсоқ жауапты қамтамасыз ету үшін telinit Q немесе q командасы / etc / inittab файлын қайта қарауға init деп ойналады .

Егер init бір пайдаланушы режимінде болмаса және қуат сигналының сигналын (SIGPWR) алса, ол / etc / powerstatus файлын оқиды. Содан кейін ол осы файлдың мазмұнына негізделген пәрменді бастайды:

F (AIL)

Қуаты сәтсіз, UPS қуатты қамтамасыз етеді. Powerwait және powerfail жазбаларын орындаңыз.

ЖАРАЙДЫ МА)

Қуат қалпына келтірілді, powerokwait жазбаларын орындайды.

L (OW)

Қуат сәтсіздікке ұшырайды және UPS төмен батареяға ие. Powerfailnow жазбаларын орындаңыз.

Егер / etc / powerstatus болмаса немесе басқа ештеңе жоқ болса, F , O немесе L әріптері init болса, ол F әрпін оқығандай әрекет етеді.

SIGPWR және / etc / powerstatus-ны пайдалануды жоққа шығарады. Инициалмен өзара әрекеттесуді қалайтын адам / dev / initctl басқару арнасын пайдалану керек - бұл туралы қосымша құжаттаманы алу үшін sysvinit пакетінің бастапқы кодын қараңыз.

Іске қосу деңгейін өзгерту үшін init сұралған кезде SIGTERM ескерту сигналын жаңа деңгейде анықталмаған барлық процестерге жібереді. Содан кейін SIGKILL сигналы арқылы осы процестерді мәжбүрлеп тоқтату алдында 5 секунд күтеді. Айта кету керек, init барлық процестердің (және олардың ұрпақтарының) бастапқыда олар үшін жасаған бірдей процесс тобында қалатынын ескеріңіз. Егер кез-келген процесс процестің тобына тәуелділігін өзгертсе, ол бұл сигналдарды қабылдамайды. Мұндай процестерді бөлек тоқтату қажет.

Telinit

/ sbin / telinit / sbin / init сілтемесі бар. Сәйкес әрекетті орындау үшін бір таңбалы аргумент қабылдайды және init инициалдарын қабылдайды. Келесі дәлелдер telinit үшін директивалар ретінде қызмет етеді:

0 , 1 , 2 , 3 , 4 , 5 немесе 6

init бағдарламасының көрсетілген іске қосу деңгейіне ауысуын айтыңыз.

a , b , с

a , b немесе c деңгейлеріне ие болатын / etc / inittab файл жазбаларын өңдейтін init файлын айтыңыз.

Q немесе q

init / etc / inittab файлын қайта қарауға нұсқау беріңіз.

S немесе s

init- ге жеке қолданушы режиміне ауысуды айтыңыз.

U немесе u

init (өзін сақтау) күйін іске қосу туралы айтып беріңіз. / Etc / inittab файлын қайта қарастырмайды. Іске қосу деңгейі Ss12345 бірі болуы керек, әйтпесе сұрау үнсіз еленбейді.

telinit сондай-ақ SIGTERM және SIGKILL сигналдарын жіберу процестерін қанша уақыт күту керек екенін де айта алады. Әдепкі бойынша - 5 секунд, бірақ бұл параметр -t секциямен өзгертілуі мүмкін.

telinit тек тиісті артықшылықтары бар пайдаланушылар тарапынан шақырылуы мүмкін.

Init екілік тексеру процесін идентификаторы арқылы init немесе telinit екенін тексереді; процестің нақты бастамасы әрдайым 1 . Бұдан шығатыны, телинитке қоңырау шалудың орнына, оның орнына, қысқа жол ретінде init-ды қолдануға болады.