Як выкарыстоўваць Init Command ў Linux

Init з'яўляецца бацькам усіх працэсаў. Яго асноўная роля заключаецца ў стварэнні працэсаў з скрыпту захоўваецца ў файле / і г.д. / inittab (гл inittab (5)). Гэты файл звычайна змяшчае запісы , якія выклікаюць ініцыялізацыі на нераст Геці з на кожнай радку , што карыстальнікі могуць увайсці ў сістэму . Ён таксама кантралюе аўтаномныя працэсы , неабходныя для якой - небудзь канкрэтнай сістэмы.

ўзроўні

Узровень запуск з'яўляецца праграмнай канфігурацыяй сістэмы , якая дазваляе толькі абраная групе працэсаў існаваць. Працэсы , спароджаныя ініцыялізацыі для кожнага з гэтых узроўняў выканання, вызначаны ў / і г.д. / inittab файл. Init можа быць у адзін з васьмі узроўняў выканання: 0-6 і S або с. Узровень запуск змяняецца пры наяўнасці прывілеяванага карыстальніка telinit запуску, які пасылае адпаведныя сігналы INIT, кажучы гэта , які ўзровень выканання , каб змяніць.

Ўзроўні запуску 0, 1 і 6 зарэзерваваны. Узровень запуску 0 выкарыстоўваецца, каб спыніць сістэму, узровень запуску 6 выкарыстоўваецца для перазагрузкі сістэмы, а ўзровень 1 выкарыстоўваецца, каб атрымаць сістэму ўніз ў рэжыме аднаго карыстача. Runlevel S на самай справе не прызначаныя для выкарыстання непасрэдна, але больш для скрыптоў, якія выконваюцца пры ўваходзе ў ўзровень запуску 1. Для атрымання дадатковай інфармацыі па гэтым пытанні гл да старонцы кіраўніцтва адключэння (8) і inittab (5).

Ўзроўні запуску 7-9 таксама справядлівыя, хоць на самай справе не дакументаваны. Гэта адбываецца таму, што «традыцыйная» варыянту Unix не выкарыстоўваць іх. У выпадку , калі вам цікава, S і ўзроўні запуску s фактычна тое ж самае. Ўнутрана яны з'яўляюцца псеўданімамі для аднолькавага ўзроўню запуску.

загрузка

Пасля ініцыялізацыі выклікаюцца ў якасці апошняга кроку паслядоўнасці загрузкі ядра, ён шукае файл / і г.д. / inittab , каб убачыць , калі ёсць запіс пра тып initdefault (гл inittab (5)). Initdefault запіс вызначае пачатковы ўзровень запуску сістэмы. Няма Калі няма такога запісу (або няма / і г.д. / inittab наогул), узровень запуску павінен быць уведзены ў сістэмнай кансолі.

Runlevel S або s прывесці сістэму ў аднакарыстальніцкім рэжыме і не патрабуе / і г.д. / inittab файла. У аднакарыстальніцкім рэжыме, каранёвая абалонка адкрыта / Dev / кансолі.

Пры ўваходзе ў рэжыме аднаго карыстальніка, ініцыялізацыя чытае кансоль IOCTL (2) гаворыцца , з /etc/ioctl.save. Калі гэты файл не існуе, ініцыялізацыі ініцыялізуе лініі з хуткасцю 9600 бод і з CLOCAL наладамі. Пры ініцыялізацыі лісця аднакарыстальніцкага рэжыму, ён захоўвае параметры У кансолі ў гэтым файле , таму ён можа паўторна выкарыстоўваць іх для наступнай сесіі аднаго карыстача.

Пры ўваходзе ў шматкарыстальніцкі рэжым у першы раз, ініцыялізацыі выконвае загрузкі і bootwait запісу , каб файлавыя сістэмы павінны быць устаноўлены , перш чым карыстальнікі могуць увайсці. Тады ўсе запісы , якія адпавядаюць ўзровень выканання апрацоўваюцца.

Пры запуску новага працэсу ініцыялізацыі спачатку правярае , ці існуе файл / і г.д. / Стартавы скрыпт. Калі гэта адбудзецца, ён выкарыстоўвае гэты скрыпт для запуску працэсу.

Кожны раз , калі дзіця заканчвае, ініцыялізацыі запісвае факт і прычына яго смерці ў / вар / бегчы / utmp і / вар / Часопіс / wtmp, пры ўмове , што гэтыя файлы існуюць.

змяненне ўзроўню

Пасля таго, як ён спарадзіў усе працэсы , названых, ініцыялізацыя чакае адзін з яго нашчадкаў працэсаў памерці, сігнал powerfail, або да таго часу, пакуль не будзе сігналізаваць telinit змяніць ўзровень запуску сістэмы. Калі ўзнікае адна з гэтых трох умоваў, яна пераацэньвае / і г.д. / inittab файл. Новыя запісы могуць быць дададзеныя ў гэты файл у любы час. Тым ня менш, па- ранейшаму чакае ініцыялізацыі аднаго з прыведзеных вышэй трох умоў , каб адбыцца. Для забеспячэння імгненнага адказу, то telinit Q або Q каманда можа прачнуцца ініцыялізацыі перагледзець / і г.д. / inittab файл.

Калі ініцыялізацыі ці не знаходзіцца ў рэжыме аднаго карыстальніка і атрымлівае сігнал powerfail (SIGPWR), ён счытвае файл / і г.д. / PowerStatus. Затым ён запускае каманду на аснове змесціва гэтага файла:

F (AIL)

Харчаванне не атрымоўваецца, КБС забяспечвае харчаванне. Выканайце powerwait і powerfail запісу.

ДОБРА)

Сіла была адноўлена, выканаць powerokwait запісу.

Л (OW)

Харчавання не атрымоўваецца і КБС мае нізкі ўзровень зарада батарэі. Выкананне запісу powerfailnow.

Калі / і г.д. / PowerStatus не існуе або ўтрымлівае што - небудзь яшчэ , то літары F, O або L, ініцыялізацыі будзе паводзіць сябе так , як быццам ён прачытаў ліст F.

Выкарыстанне SIGPWR і / і г.д. / PowerStatus не рэкамендуецца. Хто - небудзь хоча , каб ўзаемадзейнічаць з ініцыялізацыі павінны выкарыстоўваць / канал initctl кіравання / DEV - убачыць зыходны код пакета SysVinit для атрымання дадатковай дакументацыі пра гэта.

Пры ініцыялізацыі прапануецца змяніць ўзровень выканання, ён пасылае SIGTERM папераджальны сігнал усім працэсам , якія не вызначаныя ў новым узроўні запуску. Затым ён чакае 5 секунд , перш чым прымусова спынення гэтых працэсаў з дапамогай сігналу SIGKILL. Звярніце ўвагу , што ініцыялізацыі мяркуе , што ўсе гэтыя працэсы (і іх нашчадкі) застаюцца ў той жа групе працэсаў , якія INIT першапачаткова створанага для іх. Калі які-небудзь працэс мяняе працэс групавой прыналежнасці не будзе атрымліваць гэтыя сігналы. Такія працэсы мусяць быць спыненыя паасобку.

Telinit

/ SBIN / telinit звязаная з / SBIN / ініцыялізацыі. Ён прымае аргумент односимвольного і сігналы ініцыялізацыі для выканання адпаведных дзеянняў. Наступныя аргументы служаць у якасці дырэктыў telinit:

0, 1, 2, 3, 4, 5 або 6

сказаць ініцыялізацыі , каб перайсці на паказаны ўзровень запуску.

а, бы, у

сказаць Init апрацоўваць толькі тыя / і г.д. / inittab запісы файлаў , які мае ўзровень запуску а, бы або ст.

Q або Q

сказаць ініцыялізацыі , каб перагледзець і г.д. / inittab файл /.

S або s

сказаць ініцыялізацыі , каб пераключыцца ў аднакарыстальніцкі рэжым.

U або U

сказаць ініцыялізацыі для паўторнага выканання сябе (захаванне стану). Няма паўторнае сузіраньне / і г.д. / inittab файл адбываецца. Выканаць ўзровень павінен быць адзін з Ss12345, у адваротным выпадку запыт будзе ігнаравацца.

telinit можа таксама сказаць ініцыялізацыі , колькі часу чакання паміж адпраўкай апрацоўвае SIGTERM і SIGKILL сігналаў. Значэнне па змаўчанні складае 5 секунд, але гэта можа быць зменена з дапамогай опцыі -t сек.

telinit можа быць выкліканы толькі карыстальнікамі з адпаведнымі правамі.

У ініцыялізацыйных двайковыя праверкі , калі гэта ініцыялізацыі або telinit, гледзячы на яго ідэнтыфікатар працэсу; ідэнтыфікатар працэсу , рэальны ініцыялізацыі «s заўсёды 1. Адсюль вынікае , што замест выкліку telinit можна проста выкарыстоўваць замест ініцыялізацыі ў якасці цэтліка.