Linux-жылы Init командалык кантип колдонсо болот?

Init бардык жараяндардан, анын ата-эне болуп саналат. Анын негизги ролу билэ / ж.б. / inittab сакталган жазуудан жараяндарды түзүү болуп саналат (inittab (5) карагыла). Бул адатта ЖМТИ колдонуучулар кирип алат, ар бир сапта гетти с туудурган себеп жазуу бар. Ошондой эле кандайдыр бир системасы боюнча талап автономдуу жараяндарды көзөмөлдөйт.

Runlevels

А runlevel жараяндардын гана тандалып алынган топ кылышына жол системасын программалык тарам болуп саналат. Бул runlevels ар бири үчүн ЖМТИ тарабынан ыроолонгон жараяндар / ж.б. / inittab делосуна аныкталат. Init сегиз runlevels бири болушу мүмкүн: 0-6 жана S же с. Runlevel өзгөртүү runlevel турган, аны айтып, ЖМТИ тийиштүү белги берсе, артыкчылык колдонуучу Нускасы telinit, менен өзгөрүп турат.

Runlevels 0, 1, 6 корголгон. Runlevel 0 системасын, runlevel 6 Системаны кайра жүктөө үчүн колдонулат, жана runlevel 1 ылдый бир колдонуучу режимге системасын алуу үчүн колдонулат токтотуу үчүн колдонулат. Runlevel S чынында эле түздөн-түз колдонуу үчүн эмес, тескерисинче, бул тууралуу көбүрөөк маалымат алуу үчүн runlevel 1. кирип аткарылат скрипттерине, токтоп (8) жана inittab үчүн ManPages карагыла (5).

чынында эле документ болбосо да, Runlevels 7-9 да жарактуу болуп саналат. Бул "салттуу" Unix Чыгарылган аларды колдонууга болбойт, себеби болуп саналат. Эгер сурагым келет, runlevels S жана анын чынында эле бар. Ички, алар ошол эле runlevel үчүн нускалары бар.

Өт

ЖМТИ ядро жүктөө тизмегинин акыркы кадам катары дуба кийин, ал түрү initdefault бир материалдар бар болсо көрө билэ / ж.б. / inittab издейт (inittab (5) карагыла). Initdefault материалдар системасынын алгачкы runlevel аныктайт. Эч кандай жазуу жок болсо, (же жок / ж.б. / inittab бардык), бир runlevel системасы чыгуучунун киргизсе керек.

Runlevel S же анын бир колдонуучу режимине системасын алып жана / ж.б. / inittab билэни талап кылбайт. Бир колдонуучу режимде, тамыры номиналдык / иштеп чыгуучунун / консолундагы ачылды.

Бир колдонуучу режимин кирип келгенде, ЖМТИ консолу анын окуган ушжуу (2) /etc/ioctl.save чейин айтылат. Бул жок болсо, ЖМТИ 9600 берүү жана CLOCAL орнотуулар менен жип программага жүктөйт. ЖМТИ бир колдонуучу режимди таштап кеткенде, ал кийинки бир колдонуучунун сеансы үчүн аларды кайра колдоно аласыз Бул консолу анын ушжуу орнотууларды сактайт.

Биринчи жолу көп колдонуучу режимин кирип келгенде, ЖМТИ жүктөө жана bootwait жазуулар билэ системалары уруксат берүү үчүн колдонуучулар кирип, мурун орнотулушу керек аткарат. Ошондо runlevel дал жазмалар иштелип жатат.

Бир жаңы иш баштап жатканда, ЖМТИ биринчи билэ / ж.б. / initscript бар же жок экендиги текшерилет. Эгер андай болсо, анда ишти баштоо үчүн ушул арибин колдонот.

Ар бир бала, ЖМТИ чындыкты жаздырып, себеби / курстар / чуркап / utmp-жылы каза болгон жана / VAR / журналы / wtmp токтотот, бул дептер бар экенин көрсөткөн.

өзгөртүү Runlevels

Ал көрсөтүлгөн кыймылдарынын баарынын түрткөн кийин, ЖМТИ бир powerfail белги, өлүп калбашы үчүн, анын урпактарынан жол бири күтүп, же ал энергосистемада runlevel өзгөртүү telinit менен ишарат чейин. Жогорудагы үч шарттарынын бири пайда болсо, ал / ж.б. / inittab билэни кайра каралат. Жаңы жазуулар каалаган убакта Бул кошууга болот. Бирок, ЖМТИ деле пайда болушу үчүн жогорудагы үч шарттардын бири күтөт. Укмуш жооп камсыз кылуу, telinit С же С команда / ж.б. / inittab билэ кайра карап ЖМТИнин ойгонот болот.

ЖМТИ бир колдонуучу режиминде эмес экенин жана powerfail белги (SIGPWR) алган болсо, анда ал билэ / ж.б. / powerstatus окуйт. Андан кийин бул иштин мазмуну боюнча буйрук башталат:

F (АИЗ)

Power, жихад UPS күч берип жатат. Powerwait жана powerfail жазууларды жүзөгө ашырат.

O (K)

Бийлик powerokwait жазууларды ишке ашыруу, калыбына келтирилди.

L (OW)

бийлик албай жана UPS төмөн батареяны ээ. Powerfailnow жазууларды жүзөгө ашырат.

Эгерде / ж.б. / powerstatus бар, же андан кийин тамгалар F эч нерсе камтылган эмес, оо, же L, ЖМТИ катты F окуган болсо, ошондой эле мамиле кылышат.

SIGPWR пайдалануу жана / ж.б. / powerstatus чөккөн. ЖМТИнин менен өз ара каалап Кимдир бирөө / иштеп чыгуучунун / initctl башкаруу каналын колдонуу зарыл - бул тууралуу көбүрөөк документтештирүү үчүн sysvinit пакетинин баштапкы кодун көрүп.

ЖМТИ runlevel өзгөртүүгө суралса, ал жаңы runlevel менен Ширина бардык жараяндар эскертүү сигнал SIGTERM жөнөтөт. Ал күч SIGKILL сигнал аркылуу бул жараяндарды токтотуу мурун 5 секунд турат. ЖМТИ баарын долбоорлоо (жана алардын урпактары) алгач алар үчүн жараткан ЖМТИ ошол жараян топто калаарын болжолдойт кетсек. ар кандай жараяны жараяны тобу тиешелүүлүгүн өзгөртсө, анда ал бул сигналдарын кабыл алган эмес. Мындай жол-өзүнчө токтотулушу керек.

Telinit

/ sbin / telinit / sbin / ЖМТИ менен тыгыз байланышы бар. Бул бир-мүнөзү аргумент алат жана сигналдар, тийиштүү иш-аракеттерди аткаруу үчүн ЖМТИ. Төмөнкү жүйөөлөр telinit үчүн көрсөтмөлөр болуп саналат:

0, 1, 2, 3, 4, 5 жана 6

көрсөтүлгөн Нускасы денгээлде өтүү үчүн ЖМТИнин айтып.

A, B, C

гана / ж.б. / inittab билэ жазууларды бар runlevel а, б, же с иштеп чыгуу үчүн ЖМТИнин айтып.

С же С

/ ж.б. / inittab билэни кайра карап ЖМТИнин айтып.

S же с

бир колдонуучу режимине которулуу үчүн ЖМТИнин айтып.

U же у

(мамлекетти сактап калуу) өзүн-өзү кайра ишке ашырыш үчүн ЖМТИнин айтып. Эмне жок кайра карап / боюнча ж.б. / inittab билэ. Run деңгээл Ss12345 бири болушу керек, эгерде өтүнүч унчукпай четке кагып келет.

telinit ошондой эле ачык- SIGTERM жана SIGKILL сигналдарды жөнөтүүдө күтүү керек, качанга чейин ЖМТИнин айтып бере алышат. Демейки 5 секунд, бирок бул -t сек тандоосу менен өзгөрүшү мүмкүн.

telinit гана тиешелүү сыймыктуу менен колдонуучулар негиз болот.

Ал ЖМТИ же анын иши ID карап telinit болсо ЖМТИ экилик текшерүү; чыныгы ЖМТИ .Ал жараяны номуру ар дайым 1. Ушундан улам ордуна telinit чакырып бир да жарлык катары ордуна ЖМТИнин пайдалана алат деп турат.