Skip to main content

Разумети Линук Цомманд Инит

Anonim

У томе је родитељ свих Линук процеса. То је први процес који се покреће када се рачунар покреће и ради док се систем не искључи. То је предак свих других процеса.

Његова примарна улога је стварање процеса из скрипте сачуване у фајлу / етц / иниттаб. Ова датотека обично чува уносе који изазивају инит да се креирају геттис на свакој линији коју корисници могу пријавити. Такође контролише аутономне процесе које захтијева било који одређени систем.

Рунлевелс

А рунлевел је софтверска конфигурација система која омогућава само одабрану групу процеса за извршавање. Процеси које Инит појави за сваки од ових рунлевелса дефинисани су у / етц / иниттаб датотеци. Инит може бити у једној од осам радних нивоа: 0 до 6 и С или с. Радни ниво се мења тако што има привилегованог корисника који покреће Телинит, који шаље одговарајуће сигнале за Инит, говорећи о којем се радном колону може промијенити.

Радни редови 0, 1 и 6 су резервисани. Рунлевел 0 се користи за заустављање система, радни ниво 6 се користи за рестартовање система, а радни ниво 1 се користи да би систем постао у једноструком кориснику. Рунлевел С није намењен директном коришћењу, већ умјесто скриптама које се извршавају приликом уласка на рунлевел 1.

Рунлевелс 7 тхроугх 9 такође важе, иако нису добро документовани јер их "традиционалне" Уник варијанте не користе. Рунлевелс С и с су исти. Интерно, они су алиасес за исти рунлевел.

Боотинг

Након Инит се позива као последњи корак секвенце боот кернела, тражи се датотека / етц / иниттаб да би се видело да ли постоји унос типа инитдефаулт . Инитдефаулт унос одређује почетни ниво рада система. Ако такав унос (или не / етц / иниттаб) уопште нема, на системској конзоли се мора унети радни ниво.

Рунлевел С или с узима систем у једноструки корисник и не захтева датотеку / етц / иниттаб. У једном корисничком режиму, отворена је роот схелл на / дев / конзоли.

Приликом уноса појединачног режима, инит чита стања иоцтл конзоле из /етц/иоцтл.саве. Ако ова датотека не постоји, инит иницијализује линију на 9600 бауд и са подешавањима ЦЛОЦАЛ. Када иницијатива остави појединачни корисник, он чува поставке иоцтл конзоле у ​​овој датотеци, тако да их може поново користити за следећу сесију с једним корисником.

Када први пут уноси вишекориснички режим, Инит извршава ставке за покретање и покретање боотваит-а како би омогућио инсталирање датотека датотека пре него што се корисници могу пријавити. Затим се обрађују сви уноси који одговарају нивоу рунлевел-а.

Када започне нови процес, Инит прво проверава да ли постоји датотека / етц / инитсцрипт. Ако то уради, користи ову скрипту да започне процес.

Сваки пут када се дете заврши, Инит забележи чињеницу и разлог због ког је умро у / вар / рун / утмп и / вар / лог / втмп, под условом да ове датотеке постоје.

Промена руковаоца

Након што се покрене сви наведени процеси, Инит чека да један од његових потомких процеса умре, сигнал снаге или док Телинит не сигнализира да промијени радни ниво система. Када се догоди један од ова три стања, поново се прегледа датотека / етц / иниттаб. Нови уноси се могу додати у ову датотеку у било ком тренутку. Међутим, инит и даље чека један од горе наведених три услова. Да бисте обезбедили тренутни одговор, наредба Телинит К или к може пробудити Инит да би поново прегледала датотеку / етц / иниттаб.

Ако Инит није у режиму једног корисника и прими сигнал снаге (СИГПВР), он чита датотеку / етц / поверстатус. Затим започиње команда заснована на садржају ове датотеке:

  • Ф (АИЛ): Напајање не ради, УПС обезбеђује снагу. Извршите уносе за поверваит и поверфаил.
  • У РЕДУ): Снага је враћена, извршите уносе поверокваит.
  • Л (ОВ): Напајање не ради, а УПС има малу батерију. Извршите ставке поверфаилнов.

Ако / етц / поверстатус не постоји или садржи било шта друго осим слова Ф, О или Л, Инит се понаша као да чита слово Ф.

Употреба СИГПВР-а и / етц / поверстатус је обесхрабрена. Свако ко жели да ступи у интеракцију са Инит-ом треба да користи / дев / инитцтл контролни канал.

Када се Инит затражи да промијени радни ниво, он шаље сигнал упозорења СИГТЕРМ свим процесима који су недефинисани у новом радном колону. Затим чека пет секунди пре присилног прекида ових процеса помоћу СИГКИЛЛ сигнала. Имајте на уму да Инит претпоставља да сви ови процеси и њихови потомци остају у истој процесној групи коју је Инит првобитно створио за њих. Ако било који процес мења своју групну припадност процесу, не прими ове сигнале. Такви процеси морају бити завршени засебно.

Телинит

Телинит је повезан са / сбин / инит. Потребан је аргумент са једним знаком и сигнализира Инит да изврши одговарајућу акцију. Следећи аргументи служе као упутства Телиниту:

  • 0, 1, 2, 3, 4, 5 или 6: Реците Инит-у да пређе на одређени ниво рада.
  • а, б, ц: Реците Инит да обрађује само оне уносе датотеке / етц / иниттаб који имају радни ниво а, б или ц.
  • К или к: Реците Иниту да преиспита датотеку / етц / иниттаб.
  • С или с: Реците Инит да се пребацује на једноструки кориснички режим.
  • У или у: Реците инит да се поново изврши (чување државе). Не преиспитује се датотека / етц / иниттаб. Рунлевел треба да буде С, с, 1, 2, 3, 4 или 5; иначе, захтев се тихо занемарује.

Телинит такође може рећи Иниту колико дуго треба да чека између процеса слања сигнала СИГТЕРМ и СИГКИЛЛ. Подразумевана вредност је пет секунди, али ова вредност се може променити помоћу -т секунди опција.

Телинит могу позивати само корисници са одговарајућим привилегијама.

Инит бинарни провјерава да ли је Инит или Телинит гледањем његовог ИД процеса. Прави Инит-ов процесни процес је увек 1. Из овога произилази да уместо позивања Телинита особа може користити Инит као пречицу.