Як використовувати команду 'init' в Linux

У цьому є батьком усіх Процеси Linux. Це перший процес, який запускається під час завантаження комп’ютера і виконується до тих пір, поки система не вимкнеться. Він є прабатьком усіх інших процесів.

Його основна роль полягає у створенні процесів із сценарію, що зберігається у файлі /etc/inittab. У цьому файлі зазвичай зберігаються записи, які викликають У цьому нереститися gettys на кожному рядку, в який користувачі системи можуть увійти. Він також контролює автономні процеси, необхідні для будь-якої конкретної системи.

Пінгвін Тукс є офіційним талісманом Linux.
Getty Images/Джон Коултер

Рівні виконання

А рівень виконання це програмна конфігурація системи, яка дозволяє виконувати лише вибрану групу процесів. Породжувані процеси У цьому для кожного з цих рівнів виконання визначено у файлі /etc/inittab. У цьому підтримує вісім рівнів запуску: 0 через 6 і С або с. Рівень виконання змінюється, коли виконується привілейований користувач Телініт, який надсилає відповідні сигнали до У цьому, вказуючи йому, на який рівень виконання змінити.

Рівні виконання 0, 1 і 6 зарезервовані. Рівень запуску 0 зупиняє систему, рівень виконання 6 перезавантажується система, а рівень запуску 1 переводить систему в однокористувацький режим. Runlevel S призначений не для безпосереднього використання, а для сценаріїв, які виконуються при запуску рівня виконання 1.

Рівні виконання з 7 по 9 є дійсними, але недостатньо задокументованими, оскільки звичайний Unix варіанти їх не використовують. Рівні виконання S і s однакові.

Завантаження

Після У цьому виконується як останній крок ядро послідовність завантаження, він шукає файл /etc/inittab, щоб побачити, чи є запис типу init за замовчуванням. Запис initdefault визначає початковий рівень запуску системи. Якщо такого запису немає (або взагалі немає /etc/inittab), рівень запуску необхідно ввести на системна консоль.

Рівень виконання S або s переводить систему в однокористувацький режим і не потребує файлу /etc/inittab. У режимі одного користувача коренева оболонка відкривається на /dev/console.

При вході в однокористувацький режим, у цьому читає консоль ioctl стани з /etc/ioctl.save. Якщо цей файл не існує, у цьому ініціалізує лінію зі швидкістю 9600 бод і з налаштуваннями CLOCAL. Коли у цьому залишає однокористувацький режим, він зберігає налаштування ioctl консолі в цьому файлі, щоб повторно використовувати їх для наступного однокористувацького сеансу.

При першому вході в багатокористувацький режим, У цьому виконує записи завантаження та очікування, щоб дозволити файловим системам монтуватися до входу користувачів. Потім усі записи, що відповідають процесу на рівні виконання.

Починаючи новий процес, У цьому спочатку перевіряє, чи існує файл /etc/initscript. Якщо це так, він використовує цей сценарій для початку процесу.

Кожен раз, коли дитина припиняє роботу, У цьому записує факт і причину його смерті в /var/run/utmp і/var/log/wtmp, за умови, що ці файли існують.

Зміна рівнів виконання

Екран довідки Telinit

Після того, як він породжує всі вказані процеси, У цьому чекає, поки один із процесів-нащадків загине, сигнал про збій живлення або поки Telinit не попросить його змінити рівень запуску системи. Коли виникає одна з цих трьох умов, він повторно перевіряє файл /etc/inittab. Нові записи можна додати до цього файлу в будь-який час. однак, у цьому все ще чекає на виконання однієї з трьох вищевказаних умов. Щоб забезпечити миттєву відповідь, Телініт К команда прокидається У цьому щоб повторно перевірити файл /etc/inittab.

Якщо У цьому не перебуває в однокористувацькому режимі та отримує збій живлення сигнал, він читає файл /etc/powerstatus. Потім починається а команда на основі вмісту цього файлу:

  • Ф(AIL): Збій живлення, ДБЖ подає живлення. Виконайте powerwait і збій живлення записи.
  • О(К): Живлення відновлено, виконайте powerokwait записи.
  • Л(OW): Збій живлення, а акумулятор ДБЖ розрядився. Виконайте powerfailnow записи.

Якщо /etc/powerstatus не існує або містить нічого, крім букв F, O або L, У цьому поводиться так, ніби читає букву F.

Використання SIGPWR і /etc/powerstatus тепер не рекомендується. Використовуйте канал керування /dev/initctl у сучасному Дистрибутиви Linux.

Коли У цьому запитується змінити рівень виконання, він надсилає попереджувальний сигнал SIGTERM всім процесам, які не визначені на новому рівні виконання. Потім він чекає п’ять секунд, перш ніж примусово завершити ці процеси за допомогою сигналу SIGKILL. У цьому передбачає, що всі ці процеси та їх нащадки залишаються в одній групі процесів У цьому спочатку створений для них. Якщо будь-який процес змінює належність до групи процесів, він не отримує цих сигналів. Такі процеси повинні бути припинені окремо.

Телініт

Телініт пов’язано з /sbin/init. Він приймає односимвольний аргумент і сигнали У цьому виконати відповідну дію. Наступні аргументи служать вказівками для Телініт:

  • 0, 1, 2, 3, 4, 5 або 6: Перехід до заданого рівня роботи.
  • а, б, в: обробляти лише ті записи файлу /etc/inittab, які мають рівень виконання a, b або c.
  • або q: повторно перевірте файл /etc/inittab.
  • С або с: Перехід до однокористувацького режиму. Іноді називають однокористувацький режим режим відновлення тому що він часто використовується для виконання аварійного ремонту системи.
  • У або u: Повторне виконання (зберігаючи стан). Повторна перевірка файлу /etc/inittab не відбувається. Рівень виконання має бути S, s, 1, 2, 3, 4 або 5; в іншому випадку запит ігнорується мовчки.

Телініт також можна сказати У цьому скільки часу потрібно чекати між процесами надсилання Сигнали SIGTERM і SIGKILL. За замовчуванням – п’ять секунд, але це значення можна змінити за допомогою сек варіант.

Телініт можуть викликати лише користувачі з відповідними привілеями.

The У цьому бінарні перевірки, якщо це так У цьому або Телініт переглянувши його ідентифікатор процесу. Справжній У цьомуІдентифікатор процесу завжди дорівнює 1. З цього випливає, що замість дзвонити Телініт, людина може використовувати У цьому як ярлик.