Wéi benotzt de Init Command an Linux

Init ass den Elterendeel vun alle Prozesser. D'Haaptroll ass fir Prozesser ze erstellen aus engem Skript, deen an der Datei / etc / inittab gespeichert gëtt (kuckt inittab (5)). Dëse Fichier huet normalerweis Eintrécker déi dozou féieren, Getty s op all Zeil ze brénge fir Benotzer z'ënnerschreiwen. Et kontrolléiert och autonom Prozesser déi vun engem bestëmmte System erfuerderlech sinn.

Runlevels

E Runlevel ass eng Softwarekonfiguratioun vum System déi et nëmmen e gewielte Grupp vu Prozesser gëtt. Déi Prozesser, déi vun init fir all vun dësen Runlevels spawned goufen definéiert an der / etc / inittab- Datei. Init kann an engem vun aacht Runlevelen sinn: 0-6 an S oder s . De Runlevel gëtt geännert andeems e privilegéierten Benotzerlaangstuerm Telinit geschitt , deen passende Signalleëë fënns , an et fäerdeg brénge wat se verlängert huet.

Runlevels 0 , 1 an 6 sinn reservéiert. Runlevel 0 gëtt benotzt fir de System opzemaachen, de Runlevel 6 gëtt benotzt fir de System neu z'ënnerbannen, an de Runlevel 1 gëtt benotzt fir de System an e Single User Modus ze kréien. Runlevel S ass net wierklech fir direkt benotzt ginn, awer méi fir d'Scripte déi beim Ausfëllen vu Runlevel 1 ausgeführt ginn. Fir méi Informatiounen iwwer dëst ze gesinn, kuckt dës Manpages fir shutdown (8) an inittab (5).

Runlevels 7-9 sinn och gëlteg, awer net wierklech dokumentéiert. Dëst ass well "traditionell" Unix Varianten benotze se se net. Am Fall wou Dir vläicht interessant sinn, sinn Runlevels S an s tatsächlech déi selwecht. Intern sinn se Aliasë fir de selwechte Laf.

Fuerderen

Nodeems d' Init opgeruff gouf als de läschte Schrëtt vun der Kuerzelfaarwsequenz, sie gesäit d'Datei / etc / inittab fir ze kucken ob et e Typ vun Initdefault ass (see inittab (5)). Den initdefault Eintrag determinéiert de initialen Runlevel vum System. Wann et keen esou Erlaabnes (oder nee / etc / inittab op all) ass, muss een Runlevel an der Systemkonsole geluecht ginn.

Runlevel S oder s bréngen de System zu engem eenzelne Benotzermodus a brauch keng / etc / inittab- Datei. Am eenzelne Benotzermodus gëtt eng Wurzel Shell op / dev / console geännert .

Wann Dir e Single User Modus hutt, liest d' ICTL (2) vun der Konsole aus /etc/ioctl.save liest . Wann dës Datei net existéiert, init initialiséiert d'Linn op 9600 Baud an CLOCAL Astellungen. Wann init een eenzegen Benotzer benotzt gëtt, speichert d' ioctl- Astellunge vun der Konsole an dësem Fichier, fir datt se se fir déi nächst eenzel User-Sëtz ze benotzen.

Wann Dir e puer User-Modus fir d'éischt Kéier eraucht hutt, féiert de Boot a bootwait entries fir datt Dateisystem opgeriicht ass, fir d'Benotzer sichen ze kënnen. All d'Entreeë mat dem Runlevel ginn dann veraarbecht.

Wann Dir e neie Prozess starten, fuert éischt Kontrollen ob d'Datei / etc / initscript existéiert. Wann et geschitt, benotzt se dësen Skript fir de Prozess ze starten.

All Kéier wann e Kand ofgeschloss gëtt, erfëllt init den Tatsächlecht an d'Ursaach ass et an / var / run / utmp an / var / log / wtmp gestuerwen , wann dës Dateie existéieren.

Äert Runlevels änneren

Nodeems et all de Prozesser spezifizéiert hat, waart d' Init waat fir ee vun hiren Nofolgerprozeduren ze stierwen, en Powerfail Signal, oder bis se signaliséiert gëtt duerch Telinit fir de Runlevel vum System z'änneren. Wann ee vun deenen ob dräi Konditiounen geschitt ass, iwwerpréift se d' / etc / inittab- Datei op. Nei Eegeschaften kënnen zu all Moment op dës Datei agebaut ginn. Allerdéngs waart den init nach bis een vun den obeego drei Konditiounen déi opgetratt sinn. Fir e Moment méiglech ze maachen, kann den Telinit Q oder q Kommando uewen eroflueden fir de / etc / inittab- Datei ze iwwerpréiwen.

Wann den Init net an engem Nodeel vum Benotzer benotzt a kritt en Powerfail Signal (SIGPWR), liest d'Datei / etc / powerstatus . Et fänkt un e Kommando op Basis vun den Inhalt vun dëser Datei op:

F (AIL)

D'Power geet net, d'UPS gëtt d'Kraaft. Gitt d' Powerwait an d' Powerfail Entree aus.

OK)

D'Kraaft ass restauréiert ginn, d' Powerokwait Eintritte ausgefouert .

L (OW)

D'Kraaft versprécht an d'UPS eng kleng Batterie huet. Maacht de Powerfailnow Entreeen.

Wann / etc / powerstatus existéiert net oder soss näischt fënnt dann d'Bréiwer F , O oder L , init verwiesselt, wéi wann et de Bréif F liest.

D'Benotze vu SIGPWR an / etc / powerstatus ass decouragéiert. Elo wëllt der mam Init wëlle interagéieren an de / dev / initctl Kontrollkanal benotzen - kuckt de Quellcode vum Sysvinit Package fir méi Dokumen- tiounen iwwert dës.

Wann init gefrot gëtt fir den Runlevel ze änneren, schéckt et de Warnsignal SIGTERM op all Prozesser déi net definéiert sinn am neie Runlevel. Dann waacht 5 Sekonne virun der Haft zwëschend dës Prozesser sou de Signal SIGKILL . Bedenkt datt init ass datt all dës Prozesser (an hir Nokommen) an der selweschter Prozessengruppe bleiwen, déi als originell fir si geschitt ass. Wann iergendeng Prozess seng Verknüpfung vun der Prozessegrupp ändert, ginn dës Signaler net kritt. Dëse Prozesser musse separat terminéiert ginn.

Telinit

/ sbin / telinit ass verbonne mat / sbin / init . Et hëlt een Zeechent Argument a Signaler init fir déi entspriechend Handlung ze maachen. Déi folgend Argumenter dienen als Direktiven op Telinit :

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

Erzielt init to switch to the specified run level.

a , b , c

Ë b néng Init ze verwierklechen nëmmen déi / etc / inittab Datei Entrée veraarbecht mat Runlevel a , b oder c .

Q oder q

erzielen d' initab ze iwwerpréiwen d' / etc / inittab- Datei.

S oder s

erzielen, wéi initiale Modus umellen däerf.

U oder u

erzielen dat init do u sech selwer ze maachen (de Staat bewahrt). Kee Widderhuelung vu / etc / inittab- Datei geschitt. Run-Niveau sollt ee vun Ss12345 sinn , soss ass d'Demande zougespaart .

Telinit kann och soen, wéi laang et sollt tëscht Senderprozeduren wait de SIGTERM a SIGKILL Signaler warten. De Standard gëtt 5 Sekonnen, awer dëst kann geännert ginn mat der -t sec Optioun.

Telinit kann nëmme vu Benotzer mat adäquaten Privilegien opgeruff ginn.

De init binary kontrolléiert ob et init oder telinit ass , wann seng Prozess Id identesch ass ; D'Realitéit vun der Prozess Id ass ëmmer 1 . Aus dësem ass et folgend, datt anstatt Telinit ze ruffen kann een och einfach als Init anstelle vun enger Ofkierzung benotzen.