русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Запуск процеса init. Рівні виконання (run levels)


Дата додавання: 2014-11-27; переглядів: 754.


 

Відразу після завантаження ядра Linux ще не готовий до роботи з користувачами. Те, що робить Linux такою потужною за набором можливостей ОС реалізовано у наборі процесів-сервісів, які виконуються у фоновому режимі. В Linux прийнято називати такі сервіси демонами. Головним завданням процесу init є автоматичний запуск демонів потрібних для певної робочої конфігурації (рівня виконання) та зворотня функція – зупинка демонів, які не потрібні для біжучого рівня виконання

Рівні виконання мають числові ідентифікатори від 0 до 6 та s, S.

 

Ідентификатор рівня виконання Призначення
Система зупинена
Однокористувацький режим (single user mode). Використовуєтся, наприклад адміністратором системи для виконання обслуговування
Обмежений багатокористувацький режим. Текстовий інтерфейс
Багатокористувацький режим. Текстовий інтерфейс
Режим з автоматичним запуском графічного інтерфейсу
Використовується для перезавантаження системи
s S Зарезервовані для використання командними скриптами для переходу системи в однокористувацький режим

 

 

Після запуску програма init зчитує конфігураційний файл /etc/inittab. У цьому файлі шукають рядок з параметром initdefault. Цей рядок визначає рівень виконання за замовчуванням. Приклад фрагменту файлу inittab для виконання за замовчуванням:

 

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

 

Кожен рядок файла inittab містить чотири колонки, розділені двокрапкою. У першій колонці вказано числовий ідентифікатор рядка. У другій колонці вказано номер рівня виконання. Третя колонка задає режим виконання командного файла (див. табл). У четвертій колонці вказано командний файл, який потрібно виконати. Як аргумент цьому файлу передається номер рівня виконання. Як видно з прикладу, командний файл знаходиться у каталозі /etc/rc.d/ (його ще називають головним -master- командним файлом, тому що залежно від рівня виконання він виконує велику кількість інших командних файлів).

 

Яким чином командний скрипт вирішує, які демони потрібно запустити, а які – зупинити для кожного конкретного рівня виконання? У системі UNIX в каталозі rc.d можна побачити підкаталоги з назвами rc#.d, де # вказує на певний рівень виконання. У кожному підкаталозі є скріпти, що зупиняють певні демони (назви таких скриптів починаються з букви K – kill) та скрипти, що стартують певні демони (їх назви починаються з букви S – start). Після початкової букви у назві скрипта іде число. Ці числа визначають порядок запуску скриптів – скрипти з меншими номерами запускають раніше. І нарешті, назва скрипта завершується змістовною назвою сервісу, що стартує або зупиняється.

 

Назви сервісів дозволяють системі зайвий раз не зупиняти та не запускати сервіси при переходах між рівнями. Так при переходах між рівнями зупиняють тільки ті сервіси, які не працюють на новому рівні та запускають тількі сервіси, які не є вже запущені.

З використанням inittab виконуються і деякі інші функції, наприклад, ініціалізація системи після завантаження.

si::sysinit:/etc/rc.d/rc.sysinit

 

Можливі значення режимів виконання наведені у таблиці

 

 

Режим Опис
boot Виконується підчас завантаження
bootwait Виконується підчас завантаження. Init очікує на завершення
initdefault Рівень виконання за замовчуванням. Звичайно запустається одразу ж після завантаження
ondemand Виконується для одного з рівнів виконання “по запиту” - a,b,c
powerwait Виконується якщо зникло живлення. Система очікує завершення команди
powerfail Виконується якщо зникло живлення. Система не очікує завершення
powerokwait Виконується, якщо init повідомили, що живлення відновлено
powerfailnow Виконується, якщо init повідомили, що зовнішнє джерело живлення (батарея) не має заряду
resume Виконується, коли init отримує від ядра сигнал “Software suspend”
sysinit Виконується підчас завантаження перед boot або bootwait
respawn Рестартує сервіс, якщо його зупинено
wait Стартує один раз при переході на рівень виконання. Очікує завершення
once Стартує один раз при переході на рівень виконання. Не очікує завершення
crtaltdel Виконується, якщо хтось на консолі натисне ctlr-alt-del

 

Користувач може ініцювати перехід на потрібний рівень виконання з консолі командою

init N

де N – номер потрібного рівня

 

 


<== попередня лекція | наступна лекція ==>
Завантаження з MBR | Аналіз та діагностика процесу початкового завантаження


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн