Ինչպես օգտվել Linux- ի ներսի հրամանատարությունից

Init- ը բոլոր գործընթացների ծնողն է: Դրա հիմնական դերն է գործընթացը ստեղծել / etc / inittab ֆայլում պահված սցենարից (տես inittab (5)): Այս ֆայլը սովորաբար ունենում է մուտքեր, որոնք առաջացնում են initty- ի մասին, որոնք ստանում են յուրաքանչյուր գիծում, որը կարող է մուտք գործել օգտվողներ: Այն նաեւ վերահսկում է ցանկացած համակարգով պահանջվող ինքնավար գործընթացներ:

Runlevels

Runlevel- ը ծրագրավորման ծրագրային կոնֆիգուրացիա է, որը հնարավորություն է ընձեռում միայն ընտրված գործընթացների ընթացիկ խմբին: Գործառույթները, որոնք սկսվում են init- ի կողմից, այս գործառույթների յուրաքանչյուրի համար սահմանվում են / etc / inittab ֆայլում: Init- ը կարող է լինել ութ աշխատանքային մակարդակից մեկում. 0-6 եւ S կամ s : Runlevel- ը փոխվում է ` օգտվելով արտոնյալ օգտագործող հեռահաղորդակցման հեռադիտով , որն ուղարկում է համապատասխան ազդանշաններ նախաձեռնությանը ` ասելով, թե որ մակարդակը փոխվի:

0 , 1 , եւ 6 գործառույթները վերապահված են: Runlevel 0- ը օգտագործելու համար օգտագործվում է համակարգը, 6-ը օգտագործվում է համակարգը վերաբնակեցնելու համար, եւ 1-ի գործարկումը օգտագործվում է համակարգը մեկ օգտագործողի ռեժիմի մեջ ներքեւ: Runlevel S- ը չի նշանակում, որ ուղղակիորեն օգտագործվի, բայց ավելի շատ սցենարների համար, որոնք կատարվում են գործարկման մակարդակին մուտք գործելիս: 1. Այս մասին լրացուցիչ տեղեկությունների համար տես անջատման (8) եւ inittab- ի (5) manpages- ը :

Runlevels 7-9- ը նույնպես վավեր է, թեեւ իրականում փաստագրված չէ: Դա այն պատճառով, որ «ավանդական» Unix տարբերակները չեն օգտագործում դրանք: Եթե ​​դուք հետաքրքրված եք, S- ի եւ S- ի գործառույթները նույնն են: Ներքինում նրանք նույնական մակարդակի համար կեղծանուններ են:

Booting

Նախաձեռնումը սկսվելուց հետո, որպես միջուկի բեռնման հաջորդականության վերջին քայլ, այն որոնում է / etc / inittab ֆայլը, տեսնելով , թե արդյոք կա initdefault տիպի մուտքն (տես inittab (5)): The initdefault մուտքագրում սահմանում է համակարգի նախնական մակարդակը: Եթե ​​նման գրառում չկա (կամ ոչ / etc / inittab- ը), համակարգը պետք է մուտքագրվի համակարգի վահանակում:

Runlevel S- ը համակարգը բերում է մեկ օգտագործողի ռեժիմ եւ չի պահանջում / etc / inittab ֆայլը: Յուրաքանչյուր օգտագործողի ռեժիմում բացվում է root shell- ը / dev / console- ում :

Միակ օգտագործողի ռեժիմին մուտք գործելիս init- ը կարդում է վահանակի ioctl (2) պետությունները /etc/ioctl.save- ից : Եթե ​​այս ֆայլը գոյություն չունի, init- ը նախնականացնում է գիծը 9600 baud- ի եւ CLOCAL- ի պարամետրերով: Երբ նախաձեռնությունը թողնում է մեկ օգտագործողի ռեժիմը, այն պահպանում է այս ֆայլի կոնսոլի ioctl պարամետրերը, որպեսզի դրանք կրկնակի օգտագործեն հաջորդ մեկ օգտվողի սեսիայի համար:

Առաջին անգամ մուտք գործելով բազմաբնակարանային ռեժիմ, init- ը կատարում է boot եւ bootwait գրառումները, որպեսզի ֆայլային համակարգերը տեղադրվեն, նախքան օգտվողները մուտք գործել: Այնուհետեւ ստուգման արդյունքում համապատասխանող բոլոր գրառումները մշակվում են:

Նոր գործընթաց սկսելով, init նախ ստուգում է արդյոք ֆայլը / etc / initscript գոյություն ունի: Եթե ​​դա արվում է, այն օգտագործում է այս սցենարը, սկսելու գործընթացը:

Ամեն անգամ, երբ երեխան դադարում է, նախաձեռնությունը արձանագրում է փաստը եւ այն պատճառը, որը մահացել է / var / run / utmp եւ / var / log / wtmp , պայմանով, որ այդ ֆայլերը գոյություն ունեն:

Փոխելով գործողությունների մակարդակը

Այն բանից հետո, երբ նշված բոլոր գործընթացները հստակեցրին, init- ը սպասում է իր ժառանգական գործընթացներից մեկին մեռնելու, հոսանքի լարման ազդանշանին կամ մինչեւ այն ազդանշանի միջոցով telinit- ի միջոցով փոխելու համակարգը: Երբ նշված երեք պայմաններից մեկը տեղի է ունենում, այն վերանայում է / etc / inittab ֆայլը: Ցանկացած ժամանակ այս ֆայլին կարող են ավելացվել նոր գրառում: Այնուամենայնիվ, նախաձեռնությունը դեռեւս սպասում է վերոհիշյալ երեք պայմաններից մեկի առաջացմանը: Անմիջական արձագանք ապահովելու համար telinit Q կամ q հրամանատարությունը կարող է արթնացնել նախաձեռնությունը վերանայելու համար / etc / inittab ֆայլը:

Եթե init- ը ոչ մի օգտագործողի ռեժիմում չէ եւ ստանում է Powerfail ազդանշան (SIGPWR), այն կարդում է ֆայլը / etc / powerstatus : Այնուհետեւ սկսում է հրաման, հիմնված այս ֆայլի բովանդակության վրա.

ՁԱԽՈՂՎԵԼ)

Հզորությունը ձախողվում է, UPS- ն ապահովում է իշխանությունը: Իրականացնել իշխանության եւ powerfail գրառումները:

ԼԱՎ)

Իշխանությունը վերականգնվել է, կատարում է powerokwait գրառումները:

L (OW)

Իշխանությունը ձախողում է, եւ UPS- ն ունի ցածր մարտկոց: Իրականացրեք զորահավաքի գրառումները:

Եթե ​​/ etc / powerstatus գոյություն չունի կամ որեւէ այլ բան պարունակում է F , O կամ L տառերը, init- ը կգործի այնպես, ինչպես կարդացել է F- ի նամակը:

SIGPWR- ի եւ / etc / powerstatus- ի օգտագործումը հուսադրող է: Ինչ-որ մեկը, ով ցանկանում է փոխգործակցել init- ի հետ, պետք է օգտագործի / dev / initctl վերահսկման ալիքը, տես ` sysvinit փաթեթի աղբյուրի կոդը, դրա մասին ավելի շատ փաստաթղթերի համար:

Երբ նախաձեռնությունը պահանջում է փոխել գործող մակարդակը, այն ուղարկում է SIGTERM նախազգուշական ազդանշանը բոլոր գործընթացներին, որոնք անճանաչելի են նոր մակարդակի վրա: Այնուհետեւ սպասում է 5 վայրկյան, մինչեւ SIGKILL- ի ազդանշանի միջոցով այդ գործընթացները պարտադիր դադարեցնելու համար: Նշենք, որ նախաձեռնությունը ենթադրում է, որ այս բոլոր գործընթացները (եւ նրանց սերունդները) մնում են միեւնույն գործընթացի խմբում, որն ի սկզբանե ստեղծվել է նրանց համար: Եթե ​​գործընթացը փոխում է իր պրոցեսինգային խումբը, այն չի ստանա այդ ազդանշանները: Նման գործընթացները պետք է դադարեցվեն առանձին:

Telinit- ը

/ sbin / telinit- ը կապված է / sbin / init- ի հետ: Այն տեւում է մեկ բնութագրիչ փաստարկ եւ ազդում է նախաձեռնություն կատարելու համապատասխան գործողություն: Հետեւյալ փաստարկները ծառայում են որպես հրահանգներ տելինիտի համար .

0 , 1 , 2 , 3 , 4 , 5 կամ 6

նշեք init- ին անցնել նշված վազքի մակարդակին:

ա , բ , գ

պատմել init- ը մշակել միայն / etc / inittab ֆայլի մուտքերը, որոնք ունեն վազքի մակարդակ a , b կամ c :

Q կամ q

պատմեք init- ին վերանայել / etc / inittab ֆայլը:

S կամ բ

ասեք, որ անցնեն մեկ օգտագործողի ռեժիմը անցնելու համար:

U կամ u

ասեք, որ ինքը նորից վերագործնի (պահպանելով պետությունը): Երբ տեղի է ունենում / etc / inittab ֆայլի վերլուծություն : Վազքի մակարդակը պետք է լինի Ss12345-ից , հակառակ դեպքում խնդրանքը լուռ անտեսվի:

telinit- ը կարող է նաեւ ասել, թե որքան ժամանակ է պետք սպասել SIGTERM- ի եւ SIGKILL- ի ազդանշաններ ուղարկելու միջեւ: Սխալը 5 վայրկյան է, բայց դա կարող է փոխվել -t sec տարբերակով:

telinit- ը կարող է հրավիրվել միայն համապատասխան արտոնություններ ունեցող օգտվողների կողմից:

Նախաձեռնությունը երկուական ստուգում է, թե արդյոք դա init կամ telinit է, նայելով իր պրոցեսին ID- ին , իրական նախաձեռնության գործընթացը միշտ 1 է : Դրանից հետո հետեւում է, որ հեռահաղորդման փոխարեն կարելի է օգտագործել միայն init- ի փոխարեն որպես դյուրանցում: