Skip to main content

Unawain ang Linux Command Init

How to Install and Configure Git and GitHub on Windows (Hunyo 2026)

How to Install and Configure Git and GitHub on Windows (Hunyo 2026)
Anonim

Sa loob ang magulang ng lahat ng mga proseso ng Linux. Ito ay ang unang proseso upang magsimula kapag ang isang computer boots up, at ito ay tumatakbo hanggang sa ang sistema ay shut down. Ito ay ang ninuno ng lahat ng iba pang mga proseso.

Ang pangunahing papel nito ay ang lumikha ng mga proseso mula sa isang script na naka-imbak sa file / etc / inittab. Ang file na ito ay kadalasang nag-iimbak ng mga entry na nagsasanhi sa Init upang i-spawn gettys sa bawat linya na maaaring mag-log in ang mga user. Kinokontrol din nito ang mga proseso ng autonomic na kinakailangan ng anumang partikular na system.

Runlevels

A runlevel ay isang configuration ng software ng system na nagbibigay-daan lamang sa isang piling grupo ng mga proseso upang maisagawa. Ang mga proseso na isinagawa ng Init para sa bawat isa sa mga runlevels na ito ay tinukoy sa / etc / inittab na file. Ang init ay maaaring nasa isa sa walong runlevels: 0 hanggang 6 at S o s. Ang runlevel ay binago sa pamamagitan ng pagkakaroon ng isang privileged user run Telinit, na nagpapadala ng naaangkop na mga signal sa Init, na nagsasabi na kung saan runlevel upang baguhin sa.

Ang runlevels 0, 1, at 6 ay nakalaan. Ang Runlevel 0 ay ginagamit upang ihinto ang sistema, ang runlevel 6 ay ginagamit upang i-reboot ang system, at ang runlevel 1 ay ginagamit upang makuha ang system sa single-user mode. Ang Runlevel S ay hindi sinadya upang gamitin nang direkta ngunit sa halip ng mga script na naisakatuparan kapag nagpapasok ng runlevel 1.

Ang Runlevels 7 hanggang 9 ay wasto rin, bagaman hindi mahusay na dokumentado dahil hindi ginagamit ng mga "tradisyonal" na variant ng Unix. Ang mga Runlevels S at s ay pareho. Sa loob, sila ay mga alyas para sa parehong runlevel.

Booting

Matapos ang Init ay tawagin bilang huling hakbang ng kernel boot sequence, tinitingnan nito ang file / etc / inittab upang makita kung mayroong isang entry ng uri initdefault . Ang initdefault entry ay tumutukoy sa unang runlevel ng system. Kung walang ganitong entry (o walang / etc / inittab sa lahat), isang runlevel ay dapat na ipinasok sa system console.

Ang Runlevel S o s tumatagal ng system sa single-user mode at hindi nangangailangan ng isang / etc / inittab na file. Sa single-user mode, binubuksan ang root shell sa / dev / console.

Kapag nagpapasok ng single-user mode, binabasa ng init ang mga estado ng console ng ioctl mula sa /etc/ioctl.save. Kung ang file na ito ay hindi umiiral, init initializes ang linya sa 9600 baud at sa mga setting ng CLOCAL. Kapag nag-iiwan ang init ng single-user mode, iniimbak ang mga setting ng ioctl sa console sa file na ito upang maaari itong gamitin muli para sa susunod na single-user session.

Kapag nagpapasok ng isang multiuser mode sa unang pagkakataon, Init ay nagsasagawa ng boot at mga entry sa bootwait upang payagan ang mga system file na i-mount bago makapag-log in ang mga user. Pagkatapos, ang lahat ng mga entry na tumutugma sa runlevel ay naproseso.

Kapag nagsisimula ng isang bagong proseso, Init unang sumusuri kung ang file / etc / initscript umiiral. Kung gagawin nito, ginagamit nito ang script na ito upang simulan ang proseso.

Sa bawat oras na tinapos ng isang bata, Init itala ang katotohanan at ang dahilan kung bakit namatay ito sa / var / run / utmp at / var / log / wtmp, kung umiiral ang mga file na ito.

Pagbabago ng Runlevels

Matapos na ituro nito ang lahat ng mga proseso na tinukoy, Init naghihintay para sa isa sa mga inapo nito na proseso upang mamatay, isang signal ng powerfail, o hanggang sa ito ay signaled ng Telinit upang baguhin ang runlevel ng system. Kapag ang isa sa tatlong mga kondisyon na ito ay nangyayari, muling sinusuri ang / etc / inittab na file. Maaaring maidagdag ang mga bagong entry sa file na ito anumang oras. Gayunpaman, hinihintay pa rin ng init ang isa sa mga nasa itaas na tatlong kondisyon na mangyari. Upang magbigay ng isang madalian na tugon, ang Telinit Q o q command ay maaaring gumising sa Init upang muling suriin ang / etc / inittab na file.

Kung ang Init ay wala sa single-user mode at tumatanggap ng powerfail signal (SIGPWR), binabasa nito ang file / etc / powerstatus. Pagkatapos ay magsisimula ito ng isang utos batay sa mga nilalaman ng file na ito:

  • F (AIL): Ang kapangyarihan ay nabigo, ang UPS ay nagbibigay ng kapangyarihan. Ipatupad ang mga powerwait at powerfail entry.
  • O (K): Ang kapangyarihan ay naibalik, isagawa ang mga entry sa powerokwait.
  • L (OW): Ang kapangyarihan ay nabigo, at ang UPS ay may mababang baterya. Ipatupad ang mga entry ng powerfailnow.

Kung ang / etc / powerstatus ay hindi umiiral o naglalaman ng anumang bagay bukod sa mga titik na F, O, o L, ang Init ay gumaganap na kung binabasa nito ang liham F.

Ang paggamit ng SIGPWR at / etc / powerstatus ay nasiraan ng loob. Ang sinumang nais makipag-ugnayan sa Init ay dapat gumamit ng / dev / initctl control channel.

Kapag Init ay hiniling na baguhin ang runlevel, nagpapadala ito ng babala signal SIGTERM sa lahat ng mga proseso na hindi natukoy sa bagong runlevel. Pagkatapos nito ay naghihintay ng limang segundo bago pinilit na tapusin ang mga prosesong ito gamit ang signal SIGKILL. Tandaan na ang Init ay naniniwala na ang lahat ng mga prosesong ito at ang kanilang mga inapo ay nananatili sa parehong grupo ng proseso na Init na nilikha para sa kanila. Kung ang anumang proseso ay nagbabago sa kaukulang pangkat ng proseso nito, hindi ito nakatanggap ng mga senyas na ito. Ang mga prosesong ito ay kailangang ihiwalay nang hiwalay.

Telinit

Ang Telinit ay naka-link sa / sbin / init. Ito ay tumatagal ng isang isang-character na argumento at signal Init upang maisagawa ang naaangkop na pagkilos. Ang mga sumusunod na argumento ay nagsisilbing direktiba sa Telinit:

  • 0, 1, 2, 3, 4, 5, o 6: Sabihin ang Init upang lumipat sa tinukoy na antas ng run.
  • a, b, c: Sabihin sa Init na iproseso lamang ang mga / etc / inittab na mga entry sa file na may runlevel a, b, o c.
  • Q o q: Sabihin ang Init upang suriin muli ang / etc / inittab na file.
  • S o s: Sabihin ang Init upang lumipat sa single-user mode.
  • U o u: Sabihin init upang muling ipatupad ang sarili (pagpapanatili ng estado). Walang muling pagsusuri ng mangyayari / etc / inittab file ang mangyayari. Ang Runlevel ay dapat na S, s, 1, 2, 3, 4, o 5; kung hindi, ang kahilingan ay tahimik na hindi pinansin.

Maaari ring sabihin ni Telinit si Init kung gaano katagal dapat itong maghintay sa pagitan ng mga proseso ng pagpapadala ng SIGTERM at SIGKILL signal. Ang default ay limang segundo, ngunit ang halagang ito ay maaaring mabago gamit ang -t seg pagpipilian.

Ang Telinit ay maaaring tawagin lamang ng mga gumagamit na may mga naaangkop na pribilehiyo.

Ang Init binary tseke kung ito ay Init o Telinit sa pamamagitan ng pagtingin sa ID ng proseso nito. Ang tunay na proseso ng Init ng ID ay laging 1. Mula dito, sinusundan nito na sa halip na pagtawag sa Telinit, maaaring gamitin ng isang tao ang Init bilang isang shortcut.