Hvernig á að nota Init Command í Linux

Init er foreldri allra ferla. Aðal hlutverk hennar er að búa til ferli úr handriti sem er geymt í skránni / etc / inittab (sjá inittab (5)). Þessi skrá hefur venjulega færslur sem valda því að upphafið hýsir getty s á hverri línu sem notendur geta skráð sig inn. Það stýrir einnig sjálfstæðum ferlum sem krafist er af tilteknu kerfi.

Runlevels

A runlevel er hugbúnaðaruppsetning kerfisins sem gerir aðeins valið hópferli kleift að vera til. Ferlið sem er upphafið með init fyrir hvert þessara hlaupa er skilgreint í / etc / inittab skrá. Init getur verið í einni af átta hlaupum: 0-6 og S eða s . The runlevel er breytt með því að hafa forréttinda notanda hlaupa telinit , sem sendir viðeigandi merki til init , segja það sem runlevel að skipta um.

Runlevels 0 , 1 og 6 eru frátekin. Runlevel 0 er notað til að stöðva kerfið, runlevel 6 er notað til að endurræsa kerfið og runlevel 1 er notað til að fá kerfið niður í einn notandaham. Runlevel S er í raun ekki ætlað að nota beint, heldur meira fyrir forskriftirnar sem eru framkvæmdar þegar slökkt er á rennsli 1. Nánari upplýsingar um þetta er að finna á heimasíðunni fyrir lokun (8) og inittab (5).

Runlevels 7-9 eru einnig gild, þó ekki mjög skjalfest. Þetta er vegna þess að "hefðbundin" Unix afbrigði nota þau ekki. Ef þú ert forvitinn, þá eru rennsli S og s í raun það sama. Innan eru þau alias fyrir sama runlevel.

Stígvél

Eftir að init er beitt sem síðasta skref kjarnakerfisstjórnarinnar, leitar það að skránni / etc / inittab til að sjá hvort innganga er af tegund initdefault (sjá inittab (5)). Upphafsstillingin ákvarðar upphaflega rennsli kerfisins. Ef það er engin slík innganga (eða nei / etc / inittab yfirleitt), verður að hlaupa inn á kerfisborðið.

Runlevel S eða s koma kerfinu í einn notandaham og krefst ekki / etc / inittab skrá. Í einum notandaham er rótskel opnuð á / dev / hugga .

Þegar þú skráir einhvern notandahamur , lesir init ioctl (2) stjórnborðsins frá /etc/ioctl.save . Ef þessi skrá er ekki til, init initizes línuna við 9600 baud og með CLOCAL stillingum. Þegar init byrjar einn notandahamur geymir það ioctl stillingar hugbúnaðarins í þessari skrá svo að hún geti nýtt þau til næstu notenda.

Þegar byrjað er að nota multi-notandi ham í fyrsta skipti byrjar init stígvél og bootwait færslur til að leyfa skráarkerfi að vera komið fyrir áður en notendur geta skráð sig inn. Þá eru allar færslur sem passa við runlevel unnin.

Þegar byrjað er að nýju ferli, byrjar init fyrst hvort skráin / etc / initscript sé til staðar. Ef það gerir það notar þetta handrit til að hefja ferlið.

Í hvert skipti sem barn lýkur skráir init þá staðreynd og ástæðu þess að það dó í / var / hlaupa / utmp og / var / log / wtmp , að því tilskildu að þessar skrár séu fyrir hendi.

Breyting rennsli

Eftir að það hefur haldið öllum þeim aðferðum sem tilgreindir eru, bítur init að því að einn af afkomendum sínum fer að deyja, orkumerki eða þar til hann er sýndur af telinit til að breyta gangi kerfisins. Þegar eitt af ofangreindum þremur skilyrðum kemur fram, endurteknar það aftur / etc / inittab skrána. Nýjar færslur má bæta við þessa skrá hvenær sem er. Hins vegar bíður init ennþá fyrir einni af ofangreindum þremur skilyrðum. Til að kveða á um tafarlausa svörun getur telinit Q eða q stjórnin vaknað í upphafi til að endurskoða / etc / inittab skrána.

Ef init er ekki í einum notanda og tekur á móti Powerfail-merki (SIGPWR), þá les það skrána / etc / powerstatus . Það byrjar síðan skipun byggt á innihaldi þessa skrá:

F (AIL)

Power er ekki, UPS er að veita kraftinn. Framkvæma powerwait og powerfail færslur.

O (K)

Aflinn hefur verið endurreistur, framkvæma valdatilboðin .

L (OW)

Aflið er ekki og UPS hefur lágt rafhlöðu. Framkvæma powerfailnow færslur.

Ef / etc / powerstatus er ekki til eða inniheldur eitthvað annað þá munu bréf F , O eða L , init hegða sér eins og það hafi lesið stafinn F.

Notkun SIGPWR og / etc / powerstatus er hugfallast. Einhver sem vill hafa samskipti við init ætti að nota / dev / initctl stjórna rásina - sjá kóðann á sysvinit pakkanum til að fá frekari upplýsingar um þetta.

Þegar init er beðið um að breyta rennsli, sendir það viðvörunarmerkið SIGTERM til allra ferla sem eru óskilgreindar í nýju rennslinu. Það bíður síðan 5 sekúndur áður en þolir þessi aðferð er lokið með SIGKILL- merkinu. Athugaðu að init gerir ráð fyrir að öll þessi aðferð (og afkomendur þeirra) séu áfram í sömu ferli sem upphaflega var búið til fyrir þá. Ef einhver ferli breytir tengsl viðferðarhópsins mun það ekki fá þessi merki. Slíkar aðferðir verða að endar sérstaklega.

Telinit

/ sbin / telinit er tengt / sbin / init . Það tekur eitt stafarorð og táknar init til að framkvæma viðeigandi aðgerð. Eftirfarandi rök þjóna sem tilskipun að telinit :

0 , 1 , 2 , 3 , 4 , 5 eða 6

Segðu init að skipta yfir í tilgreint hlaupastig.

a , b , c

Segðu init að vinna aðeins þá / etc / inittab skráarfærslur sem hafa runlevel a , b eða c .

Q eða q

segðu að byrja að endurskoða / etc / inittab skrána.

S eða s

Segðu init að skipta yfir í einn notandaham.

U eða þú

segðu að byrja aftur að framkvæma sjálft (varðveita ríkið). Engin endurskoðun á / etc / inittab skrá gerist. Hlaupastig ætti að vera ein af Ss12345 , annars er óskað eftir því að vera þögul.

telinit getur líka sagt upphafið hversu lengi það ætti að bíða milli sendingarferla SIGTERM og SIGKILL merki. Sjálfgefið er 5 sekúndur, en þetta er hægt að breyta með -t sek valmöguleikanum.

Telinit er aðeins hægt að nota af notendum með viðeigandi forréttindi.

The init tvöfaldur stýrir hvort það er init eða telinit með því að skoða ferli þess ; ferli kerfisins í upphafi init er alltaf 1 . Af þessu fylgir það að í stað þess að kalla telinit má einnig nota init í staðinn sem smákaka.