Linux Чизме

Испоставило се да процес покретања нема много:

1. Боот лоадер проналази слику кернела на disk, учитава га у меморију и покреће га.
2. Језгро покрене уређаје и СТИ драјвери.
3. Кернел монтира роот фајлsystem.
4. Језгро почиње инит звао да закажете.
5. прва поставља остатак од процеса у покрету.
6. Последњи процеси који инит почиње као део боот секвенце омогућавају вам да се пријавите.

Идентификовање сваке фазе процеса покретања је непроцењиво за решавање проблема са покретањем система и разумевање system у целини. Да бисте започели, убаците покретачки програм у почетни екран, што је почетни екран или упит који добијете након што се рачунар изврши самотестирање, питајући који рад system трчати. Након што направите избор, покретач покретања покреће Linux кернел, предајући контролу над system до језгра.

Постоји детаљна дискусија језгра на другом месту у овој књизи из које је одломак овај чланак. Овај чланак покрива језгро иницијализација фаза, фаза у којој кернел штампа гомилу порука о хардверу присутном на system. Кернел започиње инит одмах након што прикаже поруку у којој се објављује да је кернел монтирао роот датотекаsystem:

ВФС: ​​Монтирани роот (ект2 датотекеsystem) само за читање.

Убрзо након тога, видећете поруку о покретању инит-а, након чега следи system сервисне поруке за покретање и на крају ћете добити неку врсту упита за пријаву.

НАПОМЕНЕ На rED ХАТ Linux, почетна напомена је посебно очигледна, јер вам „жели добродошлицу“ у Ред Хат Linux.” Све поруке након тога показују успех или неуспех у заградама на десној страни екрана.

Већи део овог поглавља бави прва, јер је битан елеменат у боот секвенце имате највише контроле.
инит

Нема ништа посебно у вези инит-а. То је програм као и сваки други на Linux system, и наћи ћете га у / сбин заједно са другим system бинарне датотеке. Главна сврха инит-а је покретање и заустављање других програма у одређеном низу. Све што морате знати је како функционише овај низ.

Постоји неколико различитих варијација, али већина Linux дистрибуције користе System Овде се разговара о В стилу. Неке дистрибуције користе једноставнију верзију која подсећа на БСД инит, али мало је вероватно да ћете се сусрести са тим.

Рунлевел

У било ком тренутку на а Linux system, изводи се одређени основни скуп процеса. Ово стање macхине се назива нивоом трчања и означава се бројем од 0 до 6. Тхе system проводи већину свог времена на једном нивоу. Међутим, када искључите macхине довн, инит се пребацује на други ниво покретања како би прекинуо system услуге на уредан начин и да каже кернелу да престане. Још један ниво покретања је за једног корисника mode, о чему се говори касније.

Најлакши начин за управљање нивоима покретања је да испитате инит конфигурациону датотеку, /етц/иниттаб. Потражите линију попут следећег:

ИД: 5: инитdefault:

Ова линија значи да default рунлевел на system је 5. Сви редови у иниттаб датотеци имају овај облик, са четири поља раздвојена двоточкама која се појављују у следећем редоследу:
# Јединствени идентификатор (кратка ниска, као што су личне у претходном примеру)
# Примењује рунлевел број (и)
# Акција коју инит треба да предузме (у претходном примеру, радња је подешавање default ниво трчања до 5)
# Команда извршава (опционо)

Не постоји наредба за извршавање у претходном покретањуdefault пример јер наредба нема смисла у контексту постављања default рунлевел. Погледајте мало даље у иниттаб, док не видите линију попут ове:

лКСНУМКС: КСНУМКС: ваит :/ етц / рц.д / РЦ КСНУМКС

Ова линија покреће већину system конфигурација и услуге кроз рц * .д и инит.д директоријуме. Можете видети да је инит подешен за извршавање наредбе зване /етц/рц.д/рц 5 када је у нивоу покретања 5. Акција чекања говори када и како инит покреће наредбу: рун рц 5 када enterинг. рунлевел 5, а затим причекајте да се ова наредба заврши пре него што учините било шта друго.

Постоји неколико различитих радњи у addитион то инитdefault и сачекајте, посебно у вези са управљањем напајањем, а страница приручника за иниттаб (5) говори вам све о њима. Они са којима ћете се највероватније сусрести објашњени су у следећим одељцима.

респавн

Акција респавн изазива инит да покрене наредбу која следи, а ако се команда заврши, да је поново покрене. Вероватно ћете видети нешто слично овом реду у вашој иниттаб датотеци:

КСНУМКС: КСНУМКС: респавн :/ сбин / мингетти ттиКСНУМКС

Гети програми пружају пријава упутства. Претходна линија је за прву виртуелну конзолу (/ дев / ттиКСНУМКС), један видиш Када притиснете АЛТ или ЦОНТРОЛ-АЛТ-ФКСНУМКС ФКСНУМКС. Респавн акција доноси брзу пријаву назад након што се одјавите.

ctrlалтдел

ctrlалтдел ацтион контролише шта system то ради када притиснете ЦОНТРОЛ-АЛТ-ДЕЛЕТЕ на виртуелној конзоли. На већини systemс, ово је нека врста наредбе за поновно покретање система помоћу наредбе за искључивање.

сисинит

Радња сисинит је прва ствар коју би инит требао покренути када се покрене, и пре тога enterу свим нивоима.

Како започети процеси у рунлевел

Сада сте спремни да научите како да покренете system услуге, непосредно пре него што вам омогући да се пријавите. Подсетите се ове иниттаб линије из раније:

лКСНУМКС: КСНУМКС: ваит :/ етц / рц.д / РЦ КСНУМКС

Овај мали линија изазива многе друге програме. РЦ је скраћеница за извршне команде, а чућете људи се односе на команде као скрипти, програма или услуге. Дакле, где су ове команде, у сваком случају?

За рунлевел 5 у овом примеру су наредбе вероватно или у /етц/рц.д/рц5.д или /етц/рц5.д. Рунлевел 1 користи рц1.д, рунлевел 2 користи рц2.д, и тако даље. Можда ћете наћи следеће items у директорију рц5.д:

СКСНУМКСсисклогд СКСНУМКСппп СКСНУМКСгпм
СКСНУМКСкернелд СКСНУМКСнетстд_нфс СКСНУМКСхттпд
СКСНУМКСнетстд_инит СКСНУМКСнетстд_мисц СКСНУМКСрмнологин
СКСНУМКСнетбасе СКСНУМКСпцмциа СКСНУМКСссхд
СКСНУМКСаццт СКСНУМКСатд
СКСНУМКСlogoutд С89црон

РЦ КСНУМКС команда покреће програм у овом директоријуму рунлевел покретањем ГМТ команде:

СКСНУМКСсисклогд кући
СКСНУМКСкернелд кући
СКСНУМКСнетстд_инит кући
СКСНУМКСнетбасе кући
...
СКСНУМКСссхд кући

Обратите пажњу на стартни аргумент у свакој команди. С у имену команде значи да би команда требало да се покрене на почетку mode, а број (00 до 99) одређује где у низу рц почиње команду.

РЦ * Д команде. Скриптама То су обично почињу програми или у / сбин / уср / сбин. Нормално, можете да схватите шта је један од команди заправо посматрајући сценарио са мање или пејџер другом програму.

Једну од ових услуга можете покренути ручно. На пример, ако желите ручно да покренете програм хттпд веб сервера, покрените С99хттпд старт. Слично томе, ако икада требате да убијете неку од услуга када macхине је укључен, можете покренути команду у директоријуму рц * .д са аргументом стоп (на пример, С99хттпд стоп).

Неки директоријуми рц*.д садрже команде које почињу са К (за "килл" или стоп mode). У овом случају, рц покреће команду са аргументом стоп уместо старт. Највероватније ћете наићи на К команде на нивоима покретања који затварају system доле.

Addинг и уклањање услуга

Ако желите да add, брисање или мењање услуга у рц*.д директоријумима, потребно је да боље погледате датотеке унутар њих. Дугачак списак открива структуру попут ове:

лрвкрвкрвк. . . СКСНУМКСсисклогд -> .. / инит.д / сисклогд
лрвкрвкрвк. . . СКСНУМКСкернелд -> .. / инит.д / кернелд
лрвкрвкрвк. . . СКСНУМКСнетстд_инит -> .. / инит.д / нетстд_инит
лрвкрвкрвк. . . СКСНУМКСнетбасе -> .. / инит.д / нетбасе
...

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

Да бисте спречили да се једна од наредби у директоријуму инит.д изводи на одређеном нивоу покретања, можда бисте помислили да уклоните симболичку везу у одговарајућем директоријуму рц * .д. Ово функционише, али ако погрешите и икада буде потребно да вратите везу на место, можда ћете имати проблема с памћењем тачног назива везе. Због тога не бисте требали уклањати везе у директоријумима рц * .д, већ, add доња црта (_) на почетку имена везе попут ове:

МВ СКСНУМКСхттпд _СКСНУМКСхттпд

У време покретања, рц игнорише _С99хттпд јер не започиње са С или К. Поред тога, оригинално име је и даље очигледно и имате брз приступ команди ако сте у стисци и ако је потребно да је покренете ручно.

До add услугу, морате створити скрипту попут осталих у директоријуму инит.д, а затим направити симболичку везу у исправном рц * .д директоријуму. Најлакши начин да напишете скрипту је да прегледате скрипте већ у инит.д, направите копију оне коју разумете и измените је.

Када addизрадите услугу, уверите се да сте изабрали одговарајуће место у секвенци покретања за покретање услуге. Ако услуга започне прерано, можда неће функционисати због зависности од неке друге услуге. За небитне услуге, већина systems administratorпреферирају бројеве из 90-их, након већине услуга које су долазиле са system.

Linux дистрибуције обично долазе са командом за омогућавање и онемогућавање услуга у рц * .д директоријумима. На пример, у Дебиану, команда је update-рц.д, иу Ред Хат-у Linux, команда је цхкцонфиг. Доступни су и графички кориснички интерфејси. Коришћење ових програма помаже да директоријуми за покретање буду доследни и помаже у надоградњи.

Наговестити: Један од најчешћих Linux installпроблемима је неправилно конфигурисан КСФрее86 сервер који се укључује и искључује, чинећи system неупотребљив на конзолама. Да бисте зауставили ово понашање, покрените систем за једног корисника mode и промените своје услуге на нивоу покретања или на нивоу покретања. Потражите нешто што садржи кдм, гдм или кдм у вашим рц*.д директоријумима или вашем /етц/иниттаб.

Контролисање инит

Повремено, морате мало да покренете инит да бисте му рекли да промени нивое покретања, да поново прочита иниттаб датотеку или само да shut down la system. Јер инит је увек први процес на а system, његов ИД процеса је увек 1.

Можете да контролишете инит са телинит. На пример, ако желите да се пребаците на рунлевел КСНУМКС, користите ову команду:

телинит КСНУМКС

Када мења нивое покретања, инит покушава да убије све процесе који нису у иниттаб датотеци за нови ниво покретања. Према томе, треба да будете опрезни када мењате нивое покретања.

Кад треба add или уклоните нове послове или направите било коју другу промену у иниттаб датотеци, морате рећи инит-у о промени и натерати га да поново прочита датотеку. Неки људи користе килл -ХУП 1 да кажу инит-у да то уради. Ова традиционална метода функционише на већини верзија Уник-а, све док је правилно откуцате. Међутим, можете покренути и ову телинит команду:

телинит К

Такође можете користити телинит с за прелазак на једнокорисничко mode.

Искључивање

инит такође контролише како system искључује се и поново покреће. Правилан начин да се shut down a Linux macхине је употреба наредбе за искључивање.

Постоје два основна начина за коришћење искључивања. Ако зауставиш system, то искључује macхине доле и држи га доле. Да би се macодмах зауставите, користите ову наредбу:

схутдовн-х нов

На већини modern macхинес са релативно новијим верзијама Linux, заустављање прекида напајање macхине. Такође можете поново покренути macхине. За поновно покретање користите -р уместо -х.

Поступак искључивања траје неколико секунди. Никада не бисте требали ресетовати или искључити а macхине током ове фазе.

У претходном примеру, сада је време за shut down. Овај аргумент је обавезан, али постоји много начина да се то наведе. Ако желите macхине да се смањи негде у будућности, један од начина је да користите + н, где је н број минута које би искључење требало да сачека пре него што обави свој посао. За друго options, погледајте страницу приручника за искључивање (8).

Да направим system рестартујте се за 10 минута, покрените ову команду:

схутдовн-Р + КСНУМКС

On Linux, схутдовн обавештава све који су пријављени да је macхине се смањује, али не ради мало стварног посла. Ако наведете време које није сада, схутдовн креира датотеку под називом /етц/нологин. Када је ова датотека присутна, system забрањује пријаве било коме осим суперкориснику.

Када system време искључивања коначно стиже, схутдовн говори инит-у да се пребаци на ниво 0 за заустављање и ниво 6 за поновно покретање. Кад инит enterс рунлевел 0 или 6, догађа се све следеће што можете да потврдите гледајући скрипте унутар рц0.д и рц6.д:

КСНУМКС. прва убија сваки процес да може (јер би при пребацивању на било који други рунлевел).

# Почетна наредба рц0.д / рц6.д се покреће, закључава system датотеке на своје место и вршење других припрема за гашење.
# Следеће команде рц0.д/рц6.д демонтирају све датотекеsystemс осим корена.
# Даље рц0.д/рц6.д команде поново монтирају роот фајлsystem само за читање.
# Још више команди рц0.д/рц6.д уписује све бафероване податке у датотекуsystem са програмом за синхронизацију.
# Коначни рцКСНУМКС.д / рцКСНУМКС.д команде реци језгру да рестартујете или престане са рестарта, халт, или Искључено програма.

Програми за поновно покретање и заустављање понашају се различито за сваки ниво покретања, што потенцијално може да доведе до забуне. од стране default, ови програми позивају искључивање помоћу -р или -х options, али ако је system је већ на нивоу заустављања или поновног покретања, програми говоре кернелу да се сам искључи. Ако стварно желиш да затвориш свој macна брзину (занемарујући било какву могућу штету услед неуредног искључивања), користите опцију -ф.

Страствен за технологију, пишем са задовољством StealthSettings.цом од 2006. Имам велико искуство у оперативним системима: macOS, Windows си Linux, али и на програмским језицима и блогерским платформама (WordPress) и за онлајн продавнице (WooCommerce, Магенто, ПрестаСхоп).

Оставите коментар