Hoe kin it Init Command yn Linux brûke

Init is de âlder fan alle prosessen. De primêre rol is om prosessen te meitsjen fan in skript yn de triem / etc / inittab opslein (sjoch ynittab (5)). Dizze triem hat gewoane e- posten dy't ynit feroarsaakje om getty s op eltse line te iepenjen dy't brûkers ynlogge kinne. It bestiet ek autonome prosessen dy't troch in bepaald systeem nedich binne.

Runlevels

In runlevel is in softwarekonfiguraasje fan it systeem dat allinich in selekteare groep fan prosessen mooglik makket. De prozessen troch init foar elk fan dizze runlevels binne definiearre yn de / etc / inittab- bestân. Ynit kin wêze yn ien fan acht rûtes: 0-6 en S of s . De runevel is feroare troch in privilegearre brûker út te fieren telinit , dy't passende sinjalen nei init stjoert, te fertellen dat rigel om te feroarjen.

Runlevels 0 , 1 en 6 binne reservearre. Runlevel 0 wurdt brûkt om it systeem te stopjen, runlevel 6 wurdt brûkt om it systeem te ferfangen, en runlevel 1 wurdt brûkt om it systeem yn ien brûkersmodus te krijen. Runlevel S is net echt bedoeld om direkt fuort te brûken, mar mear foar de skripts dy't útfierd binne as it ynfollen fan runlevel 1. Foar mear ynformaasje oer dit, sjoch de manpages foar shutdown (8) en inittab (5).

Runlevels 7-9 binne ek jildich, alhiel net echt dokumentearre. Dit is om't "tradisjonele" Unix farianten har net brûke. Yn gefal dat jo nijsgjirrich binne, binne runlevels S en s feilich itselde. Yntern binne se aliases foar deselde rigel.

Boaten

Nei it ynroppen fan init is as de lêste stap fan 'e kernel-start-folchoarder, sil it sykje de triem / etc / inittab om te sjen oft der in yngong fan it type initdefault is (sjoch ynittab (5)). De ynitdefault ynfier bepaalt de earste runlevel fan it systeem. As der gjin soarte ynfier is (of net / etc / inittab altyd) moat in runlevel ynfierd wurde yn 'e systemkonsole.

Runlevel S of s bringt it systeem foar ien brûkersmodus en freget gjin / etc / inittab triem. Yn ien brûkersmodus wurdt in root-shell iepene op / dev / console .

As jo ​​yn ien brûkersmodus komme , liest init deatl (2) staaten de konsole fan /etc/ioctl.save . As dizze triem net bestiet, init initialisearret de line yn 9600 baud en mei CLOCAL ynstellings. As init brûke single brûkersmodus , bewarret it dektl- ynstellings fan dizze konsole yn dizze triem, sadat it se brûke kin foar de folgjende single-user sesje.

As jo ​​yn in multyuser brûke foar it earste momint, spielt init de boot- en bootwaitsynteken om triemsystemen op te lossen foardat brûkers ynlogd wurde kinne. Dêrnei wurde alle ynkommens oerienkomme mei de runlevel ferwurke.

As jo ​​in nije proses begjinne, kontrolearret de earste ynsteld oft de triem / etc / initscript bestiet. As it docht, brûkt dizze skript om it proses te begjinnen.

Elke kear dat in bern útsette, init records it feit en de reden dat it stoarn is yn / var / run / utmp en / var / log / wtmp , as dizze bestannen bestiet.

Wizigingen fan Runlevels

Nei't it alle spraken fan 'e prosedure rûn hat, wachtet ien fan syn neikommende prosessen om te stjerren, in powerfail-sinjaal, of oant it wurdt troch telinit signalearre om de runlevel's systeem te feroarjen. As ien fan 'e boppesteande trije omstannichheden opnij giet, wurdt it werhelle it / etc / inittab- bestân. Nije ynskriuwingen kinne op dit stuit tagelyk tafoege wurde. Dochs wachtet init noch ien fan 'e boppeste trije omstannichheden. Om jo instantaneous response te bepalen, kin de kommando telinit Q of q opsje ynwurkje om de / etc / inittab- bestân wer te ûndersiikjen.

As init net yn ien gebrûkersmodus is en it ûntfangen fan in powerfail-sinjale (SIGPWR), lês it bestân / etc / powerstatus . It begjint dan in kommando dy't basearre is op de ynhâld fan dizze bestân:

MISLEARJE)

Macht is mislearre, UPS is de krêft. Utfiere de powerwait en powerfail ynfier.

O (K)

De krêft is restaurearre, de powerokwait yntekeningen útfiere.

LEECH)

De krêft is mislearre en de UPS hat in lege batterij. Utfiere de powerfailnow entries.

As / etc / powerstatus net bestiet of wat oars befettet, dan sille de letters F , O of L , init hâlde as it it letter F lêzen hat.

It gebrûk fan SIGPWR en / etc / powerstatus is ûntbûn. Ien dy't in ynterakt mei ynit ynteressearje moat de kanaal / dev / initctl kontrôle brûke - sjoch de boarne koade fan it sysvinitpakket foar mear dokumintaasje oer dit.

As init frege is om de rigel te feroarjen, stjoert it warskôgelsignal SIGTERM nei alle prosessen dy't net ynsteld binne yn de nije runevel. It sil 5 sekonden wachtsje foardat dizze prosessen ferdwine troch it signal fan SIGKILL . Tink derom dat init ferwachtet dat al dizze prozessen (en har neiteam) yn deselde wurkgroep bliuwe dy't ynit oarspronklik foar har makke hat. As elk proses feroaret fan syn prosessenferiening, sil dizze sinjalen net ûntfange. Sokke prosessen moatte apart wurde beëinige wurde.

Telinit

/ sbin / telinit is keppele oan / sbin / init . It nimt in ien-teken argumint en sinjalen ynit om de passende aksje út te fieren. De folgjende arguminten dogge as direkteuren nei telinit :

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

fertel ynit om te wikseljen op it spesifike rinnebegel.

a , b , c

fertel ynit om allinich dizze / etc / inittab triem-ynstjoerings te ferwurkjen dy't runlevel a , b of c hawwe .

Q of q

fertel ynit om de / etc / inittab triem wer te ûndersiikjen.

S of s

fertel ynit om te wikseljen op ien brûkersmodus.

U of u

fertel ynit om sels te fertsjinjen (behâld fan 'e steat). Gjin werútbesjen fan / etc / inittab triem passet . Run-nivo moat ien fan Ss12345 wêze , oars wurde fersyk swakke wurde negeard.

Telinit kin ek sizze, hoe lang oft it wikselje moat tusken sestersprozessen de SIGTERM- en SIGKILL-sinjalen. De standert is 5 sekonden, mar dit kin feroare wurde mei de -t sec- opsje.

Telinit kin allinich troch brûkers opnommen wurde mei passende privileezjes.

De init binary kontrolearret as it init of telinit is troch te sjen op har proses id ; De prozess id de echte ynit is altyd 1 . Hjiryn folget dat, ynstee fan telinit, jo kinne gewoan ynit eins brûke as in fluchtoets.