Kā lietot komandu "init" operētājsistēmā Linux

Tajā ir visu vecāks Linux procesi. Tas ir pirmais process, kas sākas, kad dators tiek palaists, un tas darbojas, līdz sistēma tiek izslēgta. Tas ir visu pārējo procesu priekštecis.

Tās galvenais uzdevums ir izveidot procesus no failā saglabāta skripta /etc/inittab. Šajā failā parasti tiek saglabāti ieraksti, kas izraisa Tajā lai nārstotu gettys katrā rindā, kurā sistēmas lietotāji var pieteikties. Tas arī kontrolē autonomus procesus, kas nepieciešami jebkurai konkrētai sistēmai.

Pingvīns Tukss ir oficiālais Linux talismans.
Getty Images/Džons Kulters

Runlīmeņi

izpildes līmenis ir sistēmas programmatūras konfigurācija, kas ļauj izpildīt tikai atlasītu procesu grupu. Procesi radīja Tajā katram no šiem izpildes līmeņiem ir definēti failā /etc/inittab. Tajā atbalsta astoņus izpildes līmeņus: 0 cauri 6 un S vai s. Darbības līmenis mainās, kad darbojas priviliģēts lietotājs Telinit, kas sūta atbilstošus signālus uz Tajā, norādot, uz kuru izpildes līmeni mainīt.

0, 1 un 6 izpildes līmeņi ir rezervēti. 0. izpildes līmenis aptur sistēmu, 6. izpildes līmenis

atsāknēšana sistēma un 1. izpildes līmenis piespiež sistēmu viena lietotāja režīmā. Runlīmenis S nav paredzēts tiešai lietošanai, bet gan skriptiem, kas tiek izpildīti, kad sākas 1. izpildes līmenis.

Runlīmeņi no 7. līdz 9. ir derīgi, bet nav labi dokumentēti, jo parastais Unix varianti tos neizmanto. Runlīmeņi S un s ir vienādi.

Sāknēšana

Pēc Tajā tiek izpildīts kā pēdējais solis kodols sāknēšanas secība, tā meklē failu /etc/inittab, lai redzētu, vai ir šāda veida ieraksts initdefault. Ieraksts initdefault nosaka sistēmas sākotnējo izpildes līmeni. Ja šāda ieraksta nav (vai vispār nav /etc/inittab), ir jāievada izpildes līmenis sistēmas konsole.

Runlevel S vai s pārslēdz sistēmu viena lietotāja režīmā, un tam nav nepieciešams /etc/inittab fails. Viena lietotāja režīmā /dev/console tiek atvērts saknes apvalks.

Ieejot viena lietotāja režīmā, tajā lasa konsoles ioctl stāvokļi no /etc/ioctl.save. Ja šis fails neeksistē, tajā inicializē līniju ar 9600 bodu un ar CLOCAL iestatījumiem. Kad tajā atstāj viena lietotāja režīmu, tas saglabā konsoles ioctl iestatījumus šajā failā, lai tos varētu atkārtoti izmantot nākamajā viena lietotāja sesijā.

Pirmo reizi ieejot vairāku lietotāju režīmā, Tajā veic sāknēšanas un sāknēšanas gaidīšanas ierakstus, lai ļautu failu sistēmām uzstādīt, pirms lietotāji piesakās. Pēc tam visi ieraksti, kas atbilst izpildes līmeņa procesam.

Uzsākot jaunu procesu, Tajā vispirms pārbauda, ​​vai fails /etc/initscript eksistē. Ja tā notiek, tas izmanto šo skriptu, lai sāktu procesu.

Katru reizi, kad bērns pārtrauc darbu, Tajā ieraksta faktu un miršanas iemeslu mapē /var/run/utmp un/var/log/wtmp, ja šie faili pastāv.

Runlīmeņu maiņa

Telinit palīdzības ekrāns

Pēc tam, kad tiek veikti visi norādītie procesi, Tajā gaida, kad viens no tā pēcnācējiem procesiem nomirs, strāvas padeves atteices signāls vai līdz brīdim, kad Telinit tam signalizē, lai mainītu sistēmas izpildes līmeni. Kad rodas kāds no šiem trim nosacījumiem, tas atkārtoti pārbauda /etc/inittab failu. Šim failam jebkurā laikā var pievienot jaunus ierakstus. tomēr tajā joprojām gaida, kamēr iestāsies kāds no iepriekšminētajiem trim nosacījumiem. Lai nodrošinātu tūlītēju atbildi, Telinit Q pamostas komanda Tajā lai atkārtoti pārbaudītu /etc/inittab failu.

Ja Tajā nav viena lietotāja režīmā un saņem strāvas padeves pārtraukumu signāls, tas nolasa failu /etc/powerstatus. Pēc tam tas sākas a komandu pamatojoties uz šī faila saturu:

  • F(AIL): Strāva pazūd, UPS nodrošina strāvu. Izpildiet powerwait un strāvas padeves pārtraukums ieraksti.
  • O(K): Jauda ir atjaunota, izpildiet powerokwait ieraksti.
  • L(OW): pazūd strāva, un UPS ir zems akumulatora uzlādes līmenis. Izpildiet strāvas padeves pārtraukums ieraksti.

Ja /etc/powerstatus neeksistē vai satur neko citu, izņemot burtus F, O vai L, Tajā uzvedas tā, it kā lasītu burtu F.

Tagad nav ieteicams izmantot SIGPWR un /etc/powerstatus. Izmantojiet /dev/initctl vadības kanālu mūsdienu Linux izplatījumi.

Kad Tajā tiek pieprasīts mainīt izpildes līmeni, tas nosūta brīdinājuma signālu SIGTERM visiem procesiem, kas nav definēti jaunajā izpildes līmenī. Pēc tam tas nogaida piecas sekundes, pirms piespiedu kārtā pārtrauc šos procesus, izmantojot SIGKILL signālu. Tajā pieņem, ka visi šie procesi un to pēcteči paliek tajā pašā procesu grupā, kas Tajā sākotnēji tiem radīts. Ja kāds process maina savu procesu grupas piederību, tas nesaņem šos signālus. Šādi procesi ir jāizbeidz atsevišķi.

Telinit

Telinit ir saistīta ar /sbin/init. Tas prasa vienas rakstzīmes argumentu un signālus Tajā lai veiktu atbilstošu darbību. Šie argumenti kalpo kā norādījumi Telinit:

  • 0, 1, 2, 3, 4, 5 vai 6: pārslēgties uz norādīto darbības līmeni.
  • a, b, c: apstrādā tikai tos /etc/inittab faila ierakstus, kuru izpildes līmenis ir a, b vai c.
  • vai q: atkārtoti pārbaudiet failu /etc/inittab.
  • vai s: pārslēgties uz viena lietotāja režīmu. Dažreiz tiek izsaukts viena lietotāja režīms reģenerācijas režīmā jo to bieži izmanto sistēmas avārijas remontam.
  • vai u: atkārtoti izpilda sevi (saglabājot stāvokli). Fails /etc/inittab netiek atkārtoti pārbaudīts. Runlevel ir jābūt S, s, 1, 2, 3, 4 vai 5; pretējā gadījumā pieprasījums tiek klusi ignorēts.

Telinit var arī pateikt Tajā cik ilgi jāgaida starp nosūtīšanas procesiem SIGTERM un SIGKILL signāli. Noklusējuma vērtība ir piecas sekundes, taču šo vērtību var mainīt, izmantojot -t sek opciju.

Telinit var izsaukt tikai lietotāji ar atbilstošām privilēģijām.

The Tajā bināri pārbauda, ​​vai tā ir Tajā vai Telinit apskatot tā procesa ID. Īstais Tajāprocesa ID vienmēr ir 1. No tā izriet, ka tā vietā, lai zvanītu Telinit, cilvēks var izmantot Tajā kā īsceļu.