Відмінності між версіями «Процес init»
Рядок 1: | Рядок 1: | ||
− | |||
Init є предком всіх процесів. Його основне завдання полягає у створенні процесів з скрипта зберігається у файлі / і т.д. / Цей файл зазвичай має елементи, які викликають ініціалізації на нерест Getty с на кожну лінію, що користувачі можуть увійти також контролює автономні процеси вимагають будь-якої конкретної системи. | Init є предком всіх процесів. Його основне завдання полягає у створенні процесів з скрипта зберігається у файлі / і т.д. / Цей файл зазвичай має елементи, які викликають ініціалізації на нерест Getty с на кожну лінію, що користувачі можуть увійти також контролює автономні процеси вимагають будь-якої конкретної системи. | ||
Версія за 14:06, 20 вересня 2012
Init є предком всіх процесів. Його основне завдання полягає у створенні процесів з скрипта зберігається у файлі / і т.д. / Цей файл зазвичай має елементи, які викликають ініціалізації на нерест Getty с на кожну лінію, що користувачі можуть увійти також контролює автономні процеси вимагають будь-якої конкретної системи.
Рівень виконання програмної конфігурації системи, яка дозволяє лише вибрані групи процесів на існування. Процеси породжені ініціалізації для кожного з цих рівнів виконання, визначені в / і т.д. / inittab файл ініціалізації може знаходитися в одному з восьми рівнів запуску:. 0-6 і S або S. При зміні рівня виконання, маючи привілейоване telinit працювати користувач, який посилає відповідні сигнали ініціалізації, вказавши, що його рівень виконання якої потрібно перейти. Run Рівні 0, 1 і 6 зарезервовані. Рівень запуску 0 використовується для зупинки системи, рівень запуску 6 використовується для перезавантаження системи, рівень запуску 1 використовується, щоб отримати роботу системи в однокористувацький режим. 1. Рівень виконання S насправді не призначений для використання безпосередньо, але більше для скриптів, які виконуються при завантаженні рівня запуску Для отримання додаткової інформації про це див сторінки посібників для виключення (8), inittab (5). Рівні 7-9 також справедливі, хоча насправді не задокументовані. Це тому, що "традиційні" варіанти Unix не використовуйте їх. У випадку, якщо вам цікаво, рівні S і S, насправді те ж саме. Внутрішньо вони є псевдонімами для однакового рівня запуску.
ЗАВАНТАЖЕННЯ
Після ініціалізації викликається як останній крок послідовності завантаження ядра, він шукає файл / і т.д. / inittab, щоб бачити, чи є запис типу initdefault (див. inittab (5)). Запис initdefault визначає початковий рівень запуску системи. Якщо немає такого вступу (чи ні / і т.д. / inittab взагалі), рівень виконання повинен бути введений в системну консоль.
Рівень виконання S або S привести систему в режимі одного і не вимагають / і т.д. / inittab файл. У режимі одного, кореневої оболонки відкрито / Dev / консолі.
При в'їзді в режимі одного, ініціалізації читає консолі управління введенням-висновком (2) говорить з / і т.д. / ioctl.save. Якщо цей файл не існує, ініціалізації ініціалізує лінії зі швидкістю 9600 бод і з CLOCAL налаштування. При ініціалізації листя однокористувацький режим, вона зберігає IOCTL налаштування консолі у цьому файлі, щоб він міг повторно використовувати їх протягом наступних одного сеансу користувача.
При в'їзді в многопользовательском режимі в перший раз, ініціалізації виконує завантаження і bootwait записи, щоб файлових систем для установки перш ніж користувачі зможуть увійти Тоді всі записи, які збігаються рівень виконання обробляються.
При запуску нового процесу ініціалізації спочатку перевіряє, чи є файл / і т.д. / Сценарій існує. Якщо це станеться, він використовує цей сценарій, щоб почати процес. Кожен раз, коли нащадок завершується, ініціалізації записи факт і причину він помер в / VAR / бігти / utmp та / VAR / Журнал / wtmp, за умови, що ці файли існують.
ЗМІНА РІВНЯ ВИКОНАННЯ
Після того як вона породила всі процеси, зазначено, ініціалізації чекає один з його процесів нащадків, щоб померти, сигнал powerfail, або поки це сигналізує telinit змінити рівень запуску системи. Коли один з трьох зазначених вище умов відбувається, він переглядає / і т.д. / inittab файл. Нові записи можуть бути додані в цей файл в будь-який час. Тим не менш, ініціалізації ще чекає один з трьох зазначених вище умов, щоб відбутися. Для забезпечення миттєвого відгуку, telinit Q або Q команда може прокинутися ініціалізації переглянути / і т.д. / inittab файл.
Якщо ініціалізації не в режимі одного і приймає powerfail сигналу (SIGPWR), він читає файл / і т.д. / Потім запускається командою на підставі вмісту цього файлу:
F (аил) Живлення не вдається, ДБЖ забезпечує владу. Виконати powerwait і powerfail записів. О (К) Влада була відновлена, виконати powerokwait записів. L (OW) Влада не вдається і ДБЖ низькому заряді батареї. Виконати powerfailnow записів. Якщо / і т.д. / PowerStatus не існує або містить що-небудь ще, то букви F, О або L, ініціалізації буде вести себе як якби він прочитав лист F.
Використання SIGPWR і / і т.д. / PowerStatus не рекомендується. Хтось бажаючи, щоб взаємодіяти з ініціалізації повинні використовувати / Dev / initctl канал управління - див вихідний код Sysvinit пакет для більш докладної документації з цього приводу.
При ініціалізації пропонується змінити рівень виконання, він посилає попереджувальний сигнал SIGTERM всіх процесів, які не визначені в новий рівень виконання. Потім він очікує 5 секунд, перш ніж примусово припинення цих процесів з допомогою сигналу SIGKILL. Зверніть увагу, що ініціалізації передбачає, що всі ці процеси (і їх нащадків), залишаються в тій же групі ініціалізації процесу, який спочатку створені для них. Якщо який-небудь процес змінює свою групу процесів приналежності він не отримуватиме ці сигнали. Такі процеси мають бути припинені окремо.