Kijan pou yo itilize lòd Init la nan Linux

Init se paran tout pwosesis. Wòl prensipal li se kreye pwosesis ki soti nan yon script ki estoke nan dosye a / etc / inittab (gade inittab (5)). Dosye sa a anjeneral gen antre ki lakòz init yo anjandre getty s sou chak liy ki itilizatè ka ouvri pous Li kontwole tou otonòm pwosesis ki egzije pa nenpòt ki sistèm an patikilye.

Runlevels

Yon runlevel se yon konfigirasyon lojisyèl nan sistèm la ki pèmèt sèlman yon gwoup chwazi nan pwosesis egziste. Pwosè yo anjandre pa init pou chak nan sa yo runlevels yo defini nan dosye a / etc / inittab . Init ka nan youn nan uit runlevels: 0-6 ak S oswa s . Se runlevel a chanje pa gen yon itilizatè privilejye kouri telinit , ki voye siyal ki apwopriye nan init , di li ki runlevel pou chanje a.

Runlevels 0 , 1 , ak 6 yo rezève. Runlevel 0 yo itilize sispann sistèm lan, runlevel 6 yo itilize rdemare sistèm lan, epi runlevel 1 yo itilize pou jwenn sistèm lan desann nan mòd itilizatè sèl. Runlevel S se pa reyèlman vle di ke yo dwe itilize dirèkteman, men plis pou Scripts yo ke yo egzekite lè w ap antre nan runlevel 1. Pou plis enfòmasyon sou sa a, gade manpages yo pou are (8) ak inittab (5).

Runlevels 7-9 yo tou valab, men se pa reyèlman dokimante. Sa a se paske "tradisyonèl" UNIX varyant pa sèvi ak yo. Nan ka ou kirye, runlevels S ak s yo an reyalite menm bagay la. Entèn yo se aliases pou runlevel a menm.

Bòt

Apre init ap envoke kòm dènye etap la nan sekans bòt Kernel, li sanble pou dosye / etc / inittab a pou wè si gen yon antre nan kalite initdefault la (gade inittab (5)). Antre nan initdefault detèmine runlevel inisyal la nan sistèm lan. Si pa gen okenn antre konsa (oswa pa gen okenn / etc / inittab nan tout), yo dwe rantre nan sistèm konsole a.

Runlevel S oswa s pote sistèm nan mòd itilizatè sèl epi yo pa mande pou yon dosye / etc / inittab . Nan mòd itilizatè sèl, se yon koki rasin louvri sou / dev / konsole .

Lè w ap antre nan yon sèl mòd itilizatè, init li sactl (2) konsole a soti nan /etc/ioctl.save . Si dosye sa a pa egziste, init initialize liy lan nan 9600 baud ak anviwònman CLOCAL . Lè init fèy sèl mòd itilizatè, li estoke sactl anviwònman konsole a nan dosye sa a pou li ka re-itilize yo pou pwochen sesyon-sèl itilizatè a.

Lè w ap antre nan yon milti-itilizatè mòd la pou premye fwa, initbòt ak bootwait antre yo ki pèmèt sistèm dosye yo dwe monte anvan itilizatè ka ouvri nan. Lè sa a, tout antre matche ranje a ap trete.

Lè w kòmanse yon nouvo pwosesis, init premye chèk si wi ou non dosye / etc / initript la egziste. Si li fè sa, li itilize script sa a pou kòmanse pwosesis la.

Chak fwa yon timoun mete fen, dosye an reyalite ak rezon ki fè li mouri nan / var / run / utmp ak / var / log / wtmp , depi dosye sa yo egziste.

Chanje Runlevels

Apre li te anjandre tout pwosesis yo espesifye, init tann pou youn nan pwosesis desandan li yo mouri, yon siyal powerfail, oswa jiskaske li se siyale pa telinit chanje runlevel sistèm lan. Lè youn nan twa kondisyon ki anwo yo rive, li re-examines dosye / etc / inittab la . Nouvo antre ka ajoute nan dosye sa a nan nenpòt ki lè. Sepandan, init toujou tann pou youn nan twa kondisyon ki anwo yo rive. Pou bay yon repons enstantane, T a Qin oswa q lòd ka reveye init yo re-egzaminen dosye a / etc / inittab .

Si init se pa nan mòd itilizatè sèl ak resevwa yon siyal powerfail (SIGPWR), li li dosye / etc / powerstatus la . Li Lè sa a, kòmanse yon lòd ki baze sou sa ki nan dosye sa a:

F (AIL)

Pouvwa ap tonbe, UPS ap bay pouvwa a. Ekzekite powerwait la ak antre nan pouvwa.

O (K)

Gen pouvwa a retabli, egzekite antre yo Powerokwait .

BA)

Pouvwa a se fail ak UPS yo gen yon batri ki ba. Ekzekite antre yo powerfailnow .

Si / etc / powerstatus pa egziste oswa gen nenpòt lòt bagay Lè sa a, lèt yo F , O oswa L , init ap konpòte kòm si li te li lèt la F.

Itilizasyon SIGPWR ak / etc / powerstatus dekouraje. Yon moun ki vle kominike avèk init yo ta dwe itilize kanal kontwòl / dev / initctl la - al gade kòd sous la nan pake sysvinit la pou plis dokiman sou sa.

init mande pou chanje runlevel la, li voye siyal avètisman SIGTERM a pou tout pwosesis ki endefini nan runlevel nan nouvo. Li Lè sa a, tann 5 segonn anvan lafòs fini pwosesis sa yo atravè siyal la SIGKILL . Remake byen ke init sipoze ke tout pwosesis sa yo (ak pitit pitit yo) rete nan gwoup la pwosesis menm ki init orijinal kreye pou yo. Si nenpòt pwosesis chanje afilyasyon gwoup pwosesis li yo li pa pral resevwa siyal sa yo. Pwosè sa yo bezwen pou yo sispann li.

Telinit

/ sbin / telinit se lye nan / sbin / init . Li pran yon sèl-karaktè agiman ak siyal init fè aksyon ki apwopriye a. Agiman sa yo sèvi kòm direktiv pou telinit :

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

di inite pou chanje an nivo kouri espesifye.

a , b , c

di inite pou trete sèlman antre / dosye / etc / inittab ki gen runlevel a, b oswa c .

Q oswa q

di inite pou re-egzaminen dosye / etc / inittab la .

S oswa s

di init pou chanje an mòd itilizatè sèl.

U oswa u

di init pou re-egzekite tèt li (prezève eta a). Pa re-ekzamine nan dosye / etc / inittab rive. Kouri nivo yo ta dwe youn nan Ss12345 , otreman mande ta dwe an silans inyore.

Telinit kapab tou di inite konbyen tan li ta dwe rete tann ant voye pwosesis SIGTERM ak SIGKILL siyal yo. Defo a se 5 segonn, men sa ka chanje ak opsyon nan -t sec .

Telinit ka envoke sèlman pa itilizatè yo ak privilèj ki apwopriye yo.

Inite binè chèk yo si li se init oswa telinit pa gade id id pwosesis li yo; id pwosesis reyèl init la se toujou 1 . Soti nan sa a li swiv ke olye pou yo rele telinit yon sèl ka tou jis itilize init olye kòm yon chemen kout.