Si të përdorni Command Init në Linux

Init është prindi i të gjitha proceseve. Roli i tij kryesor është krijimi i proceseve nga një skript i ruajtur në skedarin / etc / inittab (shih inittab (5)). Ky skedar zakonisht ka shënime që shkaktojnë init për të nxjerrë getty në çdo rresht që përdoruesit mund të identifikohen. Ai gjithashtu kontrollon proceset autonome të kërkuara nga ndonjë sistem i veçantë.

Runlevels

Një runlevel është një konfigurim software i sistemit i cili lejon vetëm një grup të zgjedhur të proceseve të ekzistojnë. Proceset e pjella nga init për secilin nga këto runlevels janë të përcaktuara në skedarin / etc / inittab . Init mund të jetë në njërën nga tetë shkallët: 0-6 dhe S ose s . Runlevel është ndryshuar duke pasur një përdorues të privilegjuar të drejtuar telinit , i cili dërgon sinjale të përshtatshme për init , duke u treguar atë që duhet të ndryshohet.

Runlevels 0 , 1 dhe 6 janë të rezervuara. Runlevel 0 është përdorur për të ndalur sistemin, runlevel 6 përdoret për të ristartuar sistemin, dhe runlevel 1 përdoret për të çuar sistemin në një mënyrë të vetme përdoruesi. Runlevel S nuk duhet të përdoret drejtpërsëdrejti, por më shumë për skriptet që ekzekutohen kur hyjnë në runlevel 1. Për më shumë informacion mbi këtë, shih manpages për shutdown (8) dhe inittab (5).

Runlevels 7-9 janë gjithashtu të vlefshme, edhe pse jo të dokumentuara në të vërtetë. Kjo është për shkak se variantet "tradicionale" Unix nuk i përdorin ato. Në rast se jeni kurioz, S dhe S janë të njëjta. Brenda tyre janë aliases për të njëjtin sukses.

booting

Pasi init thirret si hapi i fundit i sekuencës boot boot kernel, ajo kërkon file / etc / inittab për të parë nëse ka një hyrje të tipit initdefault (shih inittab (5)). Hyrja initdefault përcakton runlevel fillestare të sistemit. Nëse nuk ka ndonjë hyrje të tillë (ose jo / etc / inittab fare), duhet të futet një runlevel në tastierë të sistemit.

Runlevel S ose s sjell sistemin në mënyrën e vetme të përdoruesit dhe nuk kërkojnë një skedar / etc / inittab . Në modalitetin e përdoruesit të vetëm, një shell root hapet në / dev / console .

Kur futni modalitetin e një përdoruesi të vetëm, init lexon vendet e ioctl (2) të konsolit nga /etc/ioctl.save . Nëse kjo skedar nuk ekziston, init initializes line at 9600 baud dhe me cilësimet CLOCAL . Kur init lë modalitetin e vetme të përdoruesit, ai ruan cilësimet e ioctlkonsolës në këtë skedar, në mënyrë që t'i ripërdorë ato për sesionin tjetër të një përdoruesi të vetëm.

Kur hyn në një mënyrë shumë përdorues për herë të parë, init kryen hyrjet e boot dhe bootwait për të lejuar instalimin e sistemeve të skedarëve para se të mund të identifikohen përdoruesit. Pastaj të gjitha shënimet që përputhen me runlevel-in janë përpunuar.

Kur fillon një proces të ri, init së pari kontrollon nëse ekziston file / etc / initscript . Nëse vepron, përdor këtë skript për të filluar procesin.

Çdo herë që një fëmijë përfundon, init regjistron faktin dhe arsyen që ka vdekur në / var / run / utmp dhe / var / log / wtmp , me kusht që këto skedarë të ekzistojnë.

Ndryshimi i Runlevels

Pasi të ketë pjellë të gjitha proceset e specifikuara, init pret që një nga proceset e tij pasardhëse të vdes, një sinjal i fuqisë ose derisa të sinjalizohet nga telinit për të ndryshuar runlevelin e sistemit. Kur ndodh një nga tri kushtet e mësipërme, ai rishqyron skedarin / etc / inittab . Shënimet e reja mund të shtohen në këtë skedë në çdo kohë. Megjithatë, init ende pret që një nga tre kushtet e mësipërme të ndodhë. Për të siguruar një përgjigje të menjëhershme, komanda telinit Q ose q mund të zgjojë init për të rishikuar skedarin / etc / inittab .

Nëse init nuk është në modalitetin e përdoruesit të vetëm dhe merr një sinjal powerfail (SIGPWR), lexon skedarin / etc / powerstatus . Pastaj fillon një komandë bazuar në përmbajtjen e kësaj skedari:

F (AIL)

Fuqia po dështon, UPS po siguron fuqinë. Ekzekutoni hyrjet e pushtetit dhe të fuqisë .

NE RREGULL)

Fuqia është rivendosur, ekzekuton hyrjet e powerokwait .

L (OW)

Fuqia dështon dhe UPS ka bateri të ulët. Ekzekutoni hyrjet e fuqishme .

Nëse / etc / powerstatus nuk ekziston ose përmban ndonjë gjë tjetër atëherë letrat F , O ose L , init do të sillen sikur ta kenë lexuar shkronjën F.

Përdorimi i SIGPWR dhe / etc / powerstatus është i dekurajuar. Dikush që dëshiron të bashkëveprojë me init duhet të përdorë kanalin e kontrollit / dev / initctl - shiko kodin burimor të pakos sysvinit për më shumë dokumentacion në lidhje me këtë.

Kur init kërkohet të ndryshojë runlevelin, ai dërgon sinjalin paralajmërues SIGTERM për të gjitha proceset që janë të padefinuara në runlevel të ri. Ajo pastaj pret 5 sekonda para se të përfundojë me forcë këto procese nëpërmjet sinjalit SIGKILL . Vini re se init supozon se të gjitha këto procese (dhe pasardhësit e tyre) mbeten në të njëjtin grup procesesh që fillimisht u krijuan për ta. Nëse ndonjë proces ndryshon përkatësinë e grupit të procesit, nuk do të marrë këto sinjale. Proceset e tilla duhet të përfundojnë veç e veç.

Telinit

/ sbin / telinit është e lidhur me / sbin / init . Ai merr një argument të një karakteri dhe sinjalizon init për të kryer veprimin e duhur. Argumentet e mëposhtme shërbejnë si direktiva për telinit :

0 , 1 , 2 , 3 , 4 , 5 ose 6

tregoni init për të kaluar në nivelin e specifikuar të kandiduar.

a , b , c

tregoni init për të përpunuar vetëm ato / etc / inittab file entries having runlevel a , b ose c .

Q ose q

tregoni init për të rishikuar skedarin / etc / inittab .

S ose s

tregoni init për të kaluar në mënyrën e vetme të përdoruesit.

U ose u

tregoni init të ri-ekzekutojë veten (ruajtjen e shtetit). Asnjë rishqyrtim i skedarit / etc / inittab nuk ndodh. Niveli i ekzekutimit duhet të jetë një nga Ss12345 , përndryshe kërkesa do të shpërfillet në heshtje.

telinit gjithashtu mund të tregojë se sa kohë duhet të presë mes proceseve të dërgimit sinjale SIGTERM dhe SIGKILL. Parazgjedhja është 5 sekonda, por kjo mund të ndryshohet me opsionin -t sec .

telinit mund të thirret vetëm nga përdoruesit me privilegje të përshtatshme.

Binarin init kontrollon nëse është init ose telinit duke shikuar në procesin e tij id ; id i procesit të vërtetë të init është gjithmonë 1 . Nga kjo rrjedh se në vend që të quhet telinit, gjithashtu mund të përdoret thjesht init si një shkurtore.