Kiel Uzi la Komandan Komandon en Linukso

Init estas la gepatro de ĉiuj procezoj. Lia ĉefa rolo estas krei procezojn de skripto konservita en la dosiero / etc / inittab (vidu inittab (5)). Ĉi tiu dosiero kutime havas enirojn, kiuj kaŭzas ke la komenco komenciĝas en ĉiu linio, kiun uzantoj povas ensaluti. Ĝi ankaŭ kontrolas aŭtonomajn procezojn postulatajn de iu aparta sistemo.

Ruliĝoj

Rullo estas programara agordo de la sistemo, kiu permesas nur elektitan grupon de procezoj ekzisti. La procezoj kreitaj de init por ĉiu el ĉi tiuj kursoj estas difinitaj en la / etc / inittab- dosiero. Komenco povas esti en unu el ok ruliĝoj: 0-6 kaj Ss . La kurielo ŝanĝiĝas per privilegiita uzanto kurita, kiu sendas taŭgajn signalojn al la komenco , rakontante al ĝi, kio funkcios por ŝanĝi.

Ruliĝoj 0 , 1 , kaj 6 estas rezervitaj. Runlevel 0 estas uzata por haltigi la sistemon, runlevel 6 estas uzata por rekomenci la sistemon, kaj runlevel 1 estas uzata por atingi la sistemon malsupren en ununuran uzilon. Runlevel S ne vere intencas esti uzata rekte, sed pli por la skriptoj ekzekutitaj en la kurieleton 1. Por pli da informoj pri tio, vidu la paĝojn por fermo (8) kaj inittab (5).

Ruliĝoj 7-9 ankaŭ estas valida, kvankam ne vere dokumentitaj. Ĉi tio estas, ĉar "tradicia" Unikso-variantoj ne uzas ilin. En la okazo ke vi estas scivola, kurieroj S kaj s estas fakte samaj. Interne ili estas aliasoj por la sama runlevel.

Borado

Post kiam la komenco estas alpreĝita kiel la lasta paŝo de la komenca sekvenco de la kerno, ĝi serĉas la dosieron / etc / inittab por vidi ĉu estas eniro de la tipo initdefault (vidu inittab (5)). La iniciato de iniciato determinas la komencan ruliĝon de la sistemo. Se ne ekzistas tia eniro (aŭ ne / etc / inittab ), oni devas enmeti runlevel en la konzolo de la sistemo.

Runlevel Ss alportas la sistemon al unuopa uzanto kaj ne postulas dosieron / etc / inittab . En sola moderna uzanto, radika konko malfermiĝas sur / dev / konzolo .

Al la eniri en ununura reĝimo de uzanto, init legas la konsilojn de ioctl (2) de /etc/ioctl.save . Se ĉi tiu dosiero ne ekzistas, init komencigas la linion ĉe 9600 baud kaj kun CLOCAL- agordojn. Kiam la komenco lasas la ununuran modon de uzanto, ĝi stokas la agordojn de iokolo de la konzolo en ĉi tiu dosiero, do ĝi povas reutiligi ilin por la sekva unu-uza sesio.

Al la eniri en modo multi-uzanto por la unua fojo, ĝi komencas la enirojn de boot and bootwait por permesi ke la sistemoj de arkivoj estu muntitaj antaŭ ol la uzantoj povu ensaluti. Tiam ĉiuj procezoj kunigitaj al la runlevel procesas.

Al la komenci novan procezon, Komence pruvas ĉu la dosiero / etc / initscript ekzistas. Se ĝi faras, ĝi uzas ĉi tiun skripton por komenci la procezon.

Ĉiufoje kiam infano finiĝas, komenc registras la fakton kaj la kialon, ke ĝi mortis en / var / run / utmp kaj / var / log / wtmp , kondiĉe ke ĉi tiuj dosieroj ekzistas.

Ŝanĝi Rullevelojn

Post kiam ĝi kreis ĉiujn procezojn specifitajn, ĝi atendas unu el ĝiaj posteaj procezoj morti, potenca signalo, aŭ ĝis ĝi estas nomata per kuritaĵo por ŝanĝi la regulejon de la sistemo. Kiam unu el la supraj tri kondiĉoj okazas, ĝi re-ekzamenas la / etc / inittab- dosieron. Novaj eniroj povas aldoniĝi al ĉi tiu dosiero en ajna momento. Tamen, Kom ankoraŭ atendas unu el la supre tri kondiĉoj por okazi. Por provizi respondon instantánea, la komputilo Qq komando povas veki rekomenci la dosieron / etc / inittab .

Se init ne estas en ununura uzanto kaj ricevas signalon de potenco (SIGPWR), ĝi legas la dosieron / ktp / powerstatus . Ĝi tiam ekkomandas sur la enhavo de ĉi tiu dosiero:

F (AIL)

Potenco malsukcesas, UPS provizas la potencon. Ekspuŝu la powerwait kaj potencajn enirojn.

BONE)

La potenco estis restarigita, ekzekuti la potencojn de potenco .

L (OW)

La potenco malsukcesas kaj la UPS havas malaltan kuirilaron. Ekspuŝu la komentojn de potenco .

Se / etc / powerstatus ne ekzistas aŭ enhavas ion alian, tiam la literoj F , OL , komenc kondutas kvazaŭ ĝi legis la leteron F.

Uzado de SIGPWR kaj / etc / powerstatus estas senkuraĝigita. Iu, kiu volas interagi kun init, devus uzi la kanalon de kontrolo / dev / initctl - vidu la fontkodon de la sysvinit- pako por pli da dokumentoj pri tio.

Kiam oni petas la komencon por ŝanĝi la kurieleton, ĝi sendas la avertan signalon SIGTERM al ĉiuj procezoj nefinitaj en la nova regulejo. Ĝi tiam atendas 5 sekundojn antaŭ forkure finanta ĉi tiujn procezojn per la SIGKILL- signalo. Rimarku, ke init supozas, ke ĉiuj ĉi tiuj procezoj (kaj iliaj posteuloj) restadas en la sama proceza grupo, kiu inicie kreis por ili. Se iu procezo ŝanĝas ĝian procezan grupon, ĝi ne ricevos ĉi tiujn signalojn. Tiaj procezoj devas esti forigitaj aparte.

Telinite

/ sbin / telinit estas ligita al / sbin / init . Ĝi prenas unu-karakteran argumenton kaj signaloj komenc por plenumi la taŭgan agon. La sekvaj argumentoj utilas kiel direktivoj por kalkuli :

0 , 1 , 2 , 3 , 4 , 56

diru ke ĝi komencu ŝanĝi la specifan kuritan nivelon.

a , b , c

diru al init prilabori nur tiujn dosierojn / etc / inittab- dosierojn, kiuj havas ruliĝon a , bc .

Qq

diru al Kom por re-ekzameni la / etc / inittab- dosieron.

Ss

diru al la komenco ŝanĝi al ununura uzanto.

u

diru al re-ekzekuti sin (konservante la ŝtaton). Neniu re-ekzamenado de / etc / inittab- dosiero okazas. Kuri nivelo devus esti unu el Ss12345 , alie peto silentus ignore .

telinit ankaŭ povas rakonti al kiom longe ĝi devus atendi inter sendi procezojn la signojn SIGTERM kaj SIGKILL. La defaŭlto estas 5 sekundoj, sed ĉi tio povas esti ŝanĝita per la -t-a- opcio.

telinito povas esti alpreĝita nur de uzantoj kun taŭgaj privilegioj.

La komencaj binaraj ĉekoj se ĝi estas komencakurita per rigardado de ĝia procezo- identigo ; La procezo de la vera procezo estas ĉiam 1 . De ĉi tio sekvas, ke anstataŭ voki telefonon oni ankaŭ povas uzi nur Inst anstataŭe kiel ligilo.