Kako uporabljati ukaz 'init' v Linuxu

V je starš vseh Linux procesi. To je prvi proces, ki se začne, ko se računalnik zažene in deluje, dokler se sistem ne izklopi. Je prednik vseh drugih procesov.

Njegova primarna vloga je ustvarjanje procesov iz skripta, shranjenega v datoteki /etc/inittab. Ta datoteka običajno shranjuje vnose, ki povzročajo drstiti se gettys na vsaki vrstici, v katero se lahko prijavijo uporabniki sistema. Prav tako nadzoruje avtonomne procese, ki jih zahteva vsak določen sistem.

Pingvin Tux je uradna maskota Linuxa.
Getty Images/John Coulter

Raven teka

raven teka je programska konfiguracija sistema, ki omogoča izvajanje samo izbrane skupine procesov. Procesi, ki so jih sprožili za vsako od teh ravni izvajanja so definirane v datoteki /etc/inittab. podpira osem nivojev izvajanja: 0 skozi 6 in S oz s. Raven izvajanja se spremeni, ko zažene privilegirani uporabnik Telinit, ki pošilja ustrezne signale V, ki mu pove, na katero raven izvajanja naj se spremeni.

Ravni izvajanja 0, 1 in 6 so rezervirane. Raven izvajanja 0 ustavi sistem, raven izvajanja 6

ponovni zagon sistem, raven izvajanja 1 pa prisili sistem v način za enega uporabnika. Runlevel S ni namenjen neposredni uporabi, temveč skripti, ki se izvajajo, ko se zažene raven izvajanja 1.

Ravni izvajanja od 7 do 9 so veljavne, vendar niso dobro dokumentirane, ker običajni Unix variante jih ne uporabljajo. Raven izvajanja S in s sta enaka.

Zagon

Po se izvede kot zadnji korak jedro zaporedje zagona, poišče datoteko /etc/inittab, da vidi, ali obstaja vnos vrste initprivzeto. Vnos initdefault določa začetno raven izvajanja sistema. Če takega vnosa ni (ali /etc/inittab sploh ni), je treba na sistemska konzola.

Runlevel S ali s popelje sistem v način za enega uporabnika in ne zahteva datoteke /etc/inittab. V načinu za enega uporabnika se korenska lupina odpre na /dev/console.

Ko vstopite v način za enega uporabnika, bere konzolo ioctl stanja iz /etc/ioctl.save. Če ta datoteka ne obstaja, inicializira linijo s hitrostjo 9600 baud in z nastavitvami CLOCAL. Kdaj zapusti način za enega uporabnika, shrani nastavitve ioctl konzole v to datoteko, tako da jih lahko ponovno uporabi za naslednjo enouporabniško sejo.

Ko prvič vstopite v večuporabniški način, izvede vnose za zagon in čakanje na zagon, da omogoči priklop datotečnih sistemov, preden se uporabniki prijavijo. Nato vsi vnosi, ki se ujemajo s postopkom na ravni izvajanja.

Ko začnete nov proces, najprej preveri, ali datoteka /etc/initscript obstaja. Če se, uporablja ta skript za začetek postopka.

Vsakič, ko otrok preneha, zabeleži dejstvo in razlog za smrt v /var/run/utmp in/var/log/wtmp, če te datoteke obstajajo.

Spreminjanje ravni izvajanja

Zaslon pomoči Telinit

Ko sproži vse navedene procese, čaka, da eden od njegovih potomcev umre, signal izpada napajanja ali dokler mu Telinit ne signalizira, da spremeni nivo izvajanja sistema. Ko se pojavi eden od teh treh pogojev, ponovno pregleda datoteko /etc/inittab. Tej datoteki lahko kadar koli dodate nove vnose. Vendar pa še vedno čaka, da se pojavi eden od zgornjih treh pogojev. Da bi zagotovili takojšen odziv, Telinit Q ukaz se zbudi da ponovno pregledate datoteko /etc/inittab.

Če ni v enouporabniškem načinu in prejme izpad napajanja signal, prebere datoteko /etc/powerstatus. Nato se začne a ukaz glede na vsebino te datoteke:

  • F(AIL): Izpad napajanja, UPS zagotavlja napajanje. Izvedite powerwait in izpad napajanja vnosi.
  • O(K): Napajanje je bilo obnovljeno, zaženite powerokwait vnosi.
  • L(OW): Napajanje je izpadlo in UPS ima nizko baterijo. Izvedite powerfailnow vnosi.

Če /etc/powerstatus ne obstaja ali vsebuje kaj drugega kot črke F, O ali L, V se obnaša, kot da bere črko F.

Uporaba SIGPWR in /etc/powerstatus je zdaj odsvetovana. Uporabite nadzorni kanal /dev/initctl v modernem distribucije Linuxa.

Kdaj zahteva spremembo ravni izvajanja, pošlje opozorilni signal SIGTERM vsem procesom, ki niso definirani na novi ravni izvajanja. Nato počaka pet sekund, preden te procese prisilno zaključi s signalom SIGKILL. V predpostavlja, da vsi ti procesi in njihovi potomci ostanejo v isti skupini procesov prvotno ustvarjen zanje. Če kateri koli proces spremeni svojo pripadnost skupini procesov, teh signalov ne prejme. Takšne postopke je treba zaključiti ločeno.

Telinit

Telinit je povezan z /sbin/init. Potrebuje enoznakovni argument in signale da izvede ustrezno dejanje. Naslednji argumenti služijo kot smernice za Telinit:

  • 0, 1, 2, 3, 4, 5 ali 6: Preklopite na določeno raven delovanja.
  • a, b, c: Obdelajte samo tiste vnose datoteke /etc/inittab, ki imajo raven izvajanja a, b ali c.
  • oz q: Ponovno preglejte datoteko /etc/inittab.
  • oz s: preklopite na način za enega uporabnika. Včasih se imenuje način za enega uporabnika obnovitveni način ker se pogosto uporablja za popravila sistema v sili.
  • oz u: Ponovno se izvede (ohrani stanje). Ne pride do ponovnega pregleda datoteke /etc/inittab. Raven izvajanja mora biti S, s, 1, 2, 3, 4 ali 5; v nasprotnem primeru se zahteva tiho prezre.

Telinit lahko tudi povem kako dolgo naj čaka med pošiljanjem procesov Signali SIGTERM in SIGKILL. Privzeto je pet sekund, vendar lahko to vrednost spremenite z -t sek možnost.

Telinit lahko pokličejo samo uporabniki z ustreznimi privilegiji.

The binarni pregledi, če je oz Telinit tako, da pogledate njegov ID procesa. Resničen VID procesa je vedno 1. Iz tega sledi, da namesto klica Telinit, lahko oseba uporablja kot bližnjico.