<
  • Главная
Статьи

Вивчаємо Linux, 101: Рівні виконання, виключення і перезавантаження

  1. Серія контенту:
  2. Цей контент є частиною серії: Вивчаємо Linux, 101
  3. Короткий огляд
  4. попередні вимоги
  5. рівні виконання
  6. Таблиця 1. Основні рівні виконання Linux
  7. Таблиця 2. Інші поширені рівні виконання Linux
  8. Рівень виконання за замовчуванням
  9. Лістинг 1. Рівень виконання за замовчуванням, визначений в / etc / inittab
  10. Зміна рівня виконання
  11. Лістинг 2. Типові рядки завантажувального меню GRUB в системі Fedora 8
  12. Малюнок 1. Вибір варіанта завантаження в меню GRUB
  13. Малюнок 2. Вибір записи ядра для зміни параметрів
  14. Малюнок 3. Установка рівня виконання (рівень 3) під час завантаження
  15. Лістинг 3. Перевірка і зміна рівня виконання
  16. Лістинг 4. Перевірка нового рівня виконання
  17. Лістинг 5. Насправді telinit є символічною посиланням на init
  18. однокористувацький режим
  19. Коректне завершення роботи
  20. Лістинг 6. Приклади завершення роботи системи
  21. Лістинг 7. Інший приклад завершення роботи
  22. Завершення роботи, перезавантаження і відключення живлення
  23. Файл / etc / inittab
  24. Лістинг 8. Повний вміст файлу inittab в ОС Fedora 8
  25. Таблиця 3. Деякі поширені дії inittab
  26. Лістинг 9. Відстеження натискання Ctrl-Alt-Delete
  27. Сценарії ініціалізації
  28. Лістинг 10. Сценарії ініціалізації
  29. Init і Upstart
  30. Лістинг 11. Взаємодія з демоном ініціалізації upstart за допомогою initctl
  31. Ресурси для скачування

Вивчаємо Linux, 101

Запуск вашої операційної системи

Серія контенту:

Цей контент є частиною # з серії # статей: Вивчаємо Linux, 101

https://www.ibm.com/developerworks/ru/views/global/libraryview.jsp?series_title_by=Изучаем+linux,+101

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Вивчаємо Linux, 101

Слідкуйте за виходом нових статей цієї серії.

Короткий огляд

З цієї статті ви дізнаєтеся, як вимкнути або перезавантажити ваш комп'ютер Linux, попереджати користувачів про майбутній завершення роботи операційної системи і перемикатися між різними рівнями виконання. Ви навчитеся:

  • Встановлювати рівень виконання за замовчуванням.
  • Перемикатися між рівнями виконання.
  • Перемикатися в одного користувача режим.
  • Вимикати або перезавантажувати комп'ютер з командного рядка.
  • Попереджати користувачів про головні системні події, включаючи перехід на інший рівень виконання.
  • Коректно завершувати роботу процесів.

Всі приклади цієї статті (крім окремо обумовлених) були виконані в операційній системі Fedora 8 з версією ядра 2.6.26. Приклади процесу upstart виконувалися в операційній системі Fedora 13 з версією ядра 2.6.34 або в системі Ubuntu 10.10 з версією ядра 2.6.35.

Ця стаття допоможе вам підготуватися до здачі іспиту LPI 101 на адміністратора початкового рівня (LPIC-1) і містить матеріали мети 101.3 теми 101. Мета має вагу 3.

попередні вимоги

Щоб отримати найбільшу користь з наших статей, необхідно володіти базовими знаннями про Linux і мати працездатний комп'ютер з Linux, на якому можна буде виконувати всі зустрічаються команди. Іноді різні версії програм виводять результати по-різному, тому вміст лістингів і малюнків може відрізнятися від того, що ви побачите на вашому комп'ютері. Зокрема, нова підсистема запуску служб і завдань Upstart має багато відмінностей від традиційного процесу System V init, який може бути знайомий багатьом користувачам (для отримання докладної інформації зверніться до розділу Init і Upstart ). У цій статті розглядається традиційний процес запуску служб System V init, а його відмінності від системи upstart будуть коротко розглянуті в кінці статті.

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

Зв'язок з Яном

Ян - один з наших найбільш популярних і плідних авторів. ознайомтеся зі всіма статтями Яна (EN), опублікованими на сайті developerWorks. Ви можете знайти контактні дані в профілі Яна і зв'язатися з ним, а також з іншими авторами та учасниками ресурсу My developerWorks.

Рівні виконання визначають, які завдання можуть виконуватися в поточному стані (або на поточному рівні виконання) операційної системи Linux. Кожна операційна система Linux підтримує три основних рівня виконання і один або кілька додаткових рівнів виконання. Основні рівні виконання перераховані в таблиці 1.

Таблиця 1. Основні рівні виконання Linux

Рівень виконання Призначення 0 Завершення роботи комп'ютера. 1 Однокористувацький режим (зазвичай має псевдонім s або S) 6 Перезавантаження комп'ютера.

Крім основних рівнів в Linux можуть бути присутніми інші рівні виконання, які можуть відрізнятися в різних дистрибутивах. Один з поширених наборів рівнів виконання показаний в таблиці 2.

Таблиця 2. Інші поширені рівні виконання Linux

Рівень виконання Призначення 2 Розрахований на багато користувачів режим без підтримки мережі. 3 на багато користувачів режим з підтримкою мережі. 5 Розрахований на багато користувачів режим з підтримкою мережі і графічної оболонки X Window.

У дистрибутиві Slackware для повного запуску системи в середовищі X Window замість рівня 5 використовується рівень 4. У дистрибутиві Debian (а також в дистрибутивах на його основі, наприклад, в Ubuntu) для багато режиму використовується один рівень виконання, зазвичай 2. Особливості вашого дистрибутива ви завжди може з'ясувати в його документації.

Рівень виконання за замовчуванням

При завантаженні Linux рівень виконання за замовчуванням визначається значенням параметра id: в файлі / etc / inittab. У лістингу 1 показано звичайне значення цього параметра в таких системах, як Fedora 8 або openSUSE 11.2, в яких рівень виконання 5 використовується для запуску оболонки X Window.

Лістинг 1. Рівень виконання за замовчуванням, визначений в / etc / inittab

[Root @ pinguino ~] # grep "^ id:" / etc / inittab id: 5: initdefault:

Якщо ви хочете, щоб за замовчуванням ваша система запускалася з іншим рівнем виконання (наприклад, з рівнем 3), то відредагуйте це значення.

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

Існує кілька способів зміни рівня виконання. Щоб виконати постійна зміна, можна відредагувати файл / etc / inittab, встановивши в ньому рівень виконання за замовчуванням, як це було показано в попередньому розділі.

Якщо необхідно завантажити систему з певним рівнем виконання один раз, то ви також можете зробити це. Наприклад, припустимо, що ви тільки що встановили нове ядро ​​і хочете додати кілька модулів після завантаження системи з новим ядром, але до завантаження системи X Window. Для цього ви можете завантажити систему з рівнем виконання 3. Це робиться під час завантаження або шляхом редагування рядка ядра (при використанні завантажувача GRUB), або шляхом додавання параметра після імені обраної системи (при використанні LILO). Для вказівки необхідного рівня виконання використовується одна цифра (в нашому випадку 3). Ми наведемо приклад для системи, в якій використовується менеджер завантаження GRUB. Припустимо, що в вашому файлі /boot/grub/menu.lst містяться рядки, показані в лістингу 2.

Лістинг 2. Типові рядки завантажувального меню GRUB в системі Fedora 8

title Fedora (2.6.26.8-57.fc8) root (hd0,5) kernel /boot/vmlinuz-2.6.26.8-57.fc8 ro root = LABEL = FEDORA8 rhgb quiet initrd /boot/initrd-2.6.26.8-57. fc8.img

Для переведення системи на рівень виконання 3 дочекайтеся виведення на екран завантажувального меню, виберіть потрібний запис і натисніть 'e' для її редагування. Залежно від налаштувань GRUB вам може знадобитися натиснути клавішу для виведення завантажувального меню, а також набрати 'p' і ввести пароль для отримання прав на редагування. Завантажувальний меню GRUB в нашій системі Fedora 8 виглядає так, як показано на малюнку 1.

Малюнок 1. Вибір варіанта завантаження в меню GRUB
Вивчаємо Linux, 101   Запуск вашої операційної системи   Серія контенту:   Цей контент є частиною # з серії # статей: Вивчаємо Linux, 101   https://www

У цьому прикладі ви повинні побачити рядки root, kernel і initrd. Перемістіть курсор на рядок, що починається на "kernel" і натисніть 'e' для її редагування. Меню GRUB в нашій системі Fedora 8 має прийняти вигляд відповідно до малюнком 2.

Малюнок 2. Вибір записи ядра для зміни параметрів

Тепер перемістіть курсор в кінець рядка і додайте пробіл і цифру "3". При бажанні ви можете прибрати параметр 'quiet' або змінити будь-які інші параметри. Меню GRUB в нашій системі Fedora 8 має прийняти вигляд відповідно до малюнком 3.

Малюнок 3. Установка рівня виконання (рівень 3) під час завантаження

Нарешті, натисніть Enter для збереження змін і 'b' для завантаження операційної системи.

Примітка. Якщо замість GRUB ви використовуєте LILO або GRUB2, то хоча дана процедура буде трохи відрізнятися, основні принципи (редагування параметрів завантаження ядра) будуть тими ж самими. Зображені на наших малюнках екрани GRUB також можуть виглядати трохи інакше в інших дистрибутивах або на інших комп'ютерах. Як правило, вам завжди доступні підказки у вигляді запрошень.

Після того, як ви закінчите роботи з налаштування ядра на рівні виконання 3, ймовірно, ви захочете переключитися на рівень 5. На щастя, для цього немає необхідності перезавантажувати комп'ютер. Для перемикання на інший рівень можна використовувати команду telinit. Щоб перевірити попередній і поточний рівні виконання, використовуйте команду runlevel. Якщо першим символом виведення цієї команди буде 'N', то це означає, що з моменту завантаження системи рівень виконання не змінювався. У лістингу 3 наведено приклади перевірки і зміни рівня виконання.

Лістинг 3. Перевірка і зміна рівня виконання

[Root @ pinguino ~] # runlevel N 3 [root @ pinguino ~] # telinit 5

Після введення команди telinit 5 ви побачите кілька швидко змінюваних повідомлень, після чого з'явиться графічний екран входу в систему. Відкрийте вікно терміналу і переконайтеся, що рівень виконання був змінений, як показано в лістингу 4.

Лістинг 4. Перевірка нового рівня виконання

[Root @ pinguino ~] # runlevel 3 5

Якщо за допомогою команди ls ви відобразіть докладні відомості про команду telinit, то побачите, що насправді вона є символічною посиланням на команду init, як показано в лістингу 5.

Лістинг 5. Насправді telinit є символічною посиланням на init

[Root @ pinguino ~] # ls -l $ (which telinit) lrwxrwxrwx 1 root root 4 2008-04-01 7:50 / sbin / telinit -> init

Програма init знає про те, яким чином вона була викликана (як init або як telinit), і веде себе відповідно. Оскільки під час завантаження команда init має ідентифікатор PID 1, то якщо згодом ви звернетеся до неї через виклик init, а не telinit, вона також буде знати про це. В цьому випадку вона буде припускати, що ви хочете, щоб вона вела себе так, як якщо б ви здійснили виклик програми telinit. Наприклад, для перемикання на рівень виконання 5 замість команди telinit 5 ви можете використовувати команду init 5.

однокористувацький режим

На відміну від таких операційних систем для ПК, як DOS або Windows, Linux за своєю природою є багатокористувацької системою. Однак в деяких ситуаціях це може виявитися проблемою, наприклад, коли вам необхідно відновити головну файлову систему або базу даних, або встановити і протестувати нове обладнання. Вирішенням цієї проблеми є використання рівня виконання 1, або на одного користувача режиму. Фактична реалізація роботи в цьому режимі залежить від дистрибутива, але зазвичай відбувається запуск командного інтерпретатора з мінімальною функціональністю. Як правило, при цьому відсутня підтримка мережі і запущені демони (або їх дуже мало). В одних системах для входу в одного користувача режим необхідно пройти аутентифікацію, а в інших цього не потрібно, і ви відразу починаєте роботу в командній оболонці з привілеями суперкористувача (root). Однокористувацький режим може виявитися вашим рятівником, але також може зруйнувати систему, тому завжди будьте дуже обережні, коли працюєте з привілеями суперкористувача. По завершенні роботи в режимі одного просто перезавантажити в звичайний розрахований на багато користувачів режим.

Так само, як і у випадку зі звичайними многопользовательскими рівнями виконання, ви можете переключитися в одного користувача режим, набравши команду telinit 1. Як було згадано в таблиці 1, рівню виконання 1 відповідають псевдоніми 's' і 'S', тому замість попередньої команди можна використовувати, наприклад, команду telinit s.

Коректне завершення роботи

Хоча для зупинки роботи користувачів і переходу в одного користувача режим можна використовувати команду telinit або init, таке несподіване завершення роботи може привести до втрати призначених для користувача даних і аварійного завершення працюючих служб і процесів. Більш кращим методом завершення роботи або перезавантаження системи є команда shutdown, яка спочатку посилає попередження всім працюючим в системі користувачам і блокує всі подальші входи в систему, а потім посилає сигнал init для перемикання рівнів виконання. Процес init, в свою чергу, посилає всім запущеним процесам сигнал SIGTERM, дозволяючи їм зберегти дані і коректно завершити роботу. По завершенні 5 секунд (або іншого певного інтервалу часу) init посилає сигнал SIGKILL для примусового завершення всіх решти процесів.

За замовчуванням команда shutdown переключає систему на рівень виконання 1 (одного користувача режим). Ви можете вказати опцію -h для зупинки системи або опцію -r - для її перезавантаження. На додаток до зазначеного вами повідомленням виводиться стандартне повідомлення. Можна вказувати абсолютний час в форматі hh: mm, а також відносне час в форматі n, де n - це кількість хвилин до вимкнення. Для негайного завершення роботи використовуйте опцію now, яка еквівалентна опції +0.

Якщо ви призначили відкладене завершення роботи системи, і цей час ще не настав, то ви можете скасувати його, натиснувши Ctrl-c, якщо команда виконується в пріоритетному режимі, або повторно запустивши команду shutdown з опцією -c для скасування всіх відкладених дій. У лістингу 6 наведено кілька прикладів використання команди shutdown і способів її скасування.

Лістинг 6. Приклади завершення роботи системи

[Root @ pinguino ~] # shutdown 5 File system recovery needed Broadcast message from root (pts / 1) (Tue Jan 4 8:05:24 2011): File system recovery needed The system is going DOWN to maintenance mode in 5 minutes! ^ C Shutdown cancelled. [Root @ pinguino ~] # shutdown -r 10 Reloading updated kernel & [1] 18784 [root @ pinguino ~] # Broadcast message from root (pts / 1) (Tue Jan 4 8:05:53 2011): Reloading updated kernel The system is going DOWN for reboot in 10 minutes! [Root @ pinguino ~] # fg shutdown -r 10 Reloading updated kernel ^ C Shutdown cancelled. [Root @ pinguino ~] # shutdown -h 23: 59 & [1] 18788 [root @ pinguino ~] # shutdown -c Shutdown cancelled. [1] + Done shutdown -h 23:59

Ви, можливо, помітили, що в останньому прикладі не надсилається повідомлення з попередженням. Це відбувається тому, що повідомлення надсилається тільки тоді, коли до настання події залишиться не більше 15 хвилин, як показано в лістингу 7. Також в лістингу 7 продемонстровано використання опції -t для збільшення затримки за замовчуванням між сигналами SIGTERM і SIGKILL (з 5 до 60 секунд).

Лістинг 7. Інший приклад завершення роботи

[Root @ pinguino ~] # date; shutdown -t60 17 Time to do backups & Tue Jan 4 8:12:55 EST 2011 [1] 18825 [root @ pinguino ~] # date Tue Jan 4 8:14:13 EST 2011 [ root @ pinguino ~] # Broadcast message from root (pts / 1) (Tue Jan 4 8:14:55 2011): Time to do backups The system is going DOWN to maintenance mode in 15 minutes!

Якщо ви скасували завершення роботи, то слід використовувати команду wall для відправки повідомлень всім користувачам, що попереджають їх про те, що робота системи не буде завершена.

Як говорилося раніше, для завершення роботи або перезавантаження системи можна використовувати команду telinit (або init). У разі використання telinit користувачі не отримують ніяких попереджень, а команда спрацьовує негайно, хоча затримка між сигналами SIGTERM і SIGKILL зберігається. Якщо ви хочете дізнатися про додаткові опціях telinit, init і shutdown, то зверніться до відповідних man-сторінок.

Завершення роботи, перезавантаження і відключення живлення

Слід знати про інших командах, призначених для завершення роботи і перезавантаження системи.

  • Команда halt - зупинка системи.
  • Команда poweroff - символічна посилання на команду halt, яка зупиняє систему і намагається відключити живлення комп'ютера.
  • Команда reboot - інша символічна посилання на команду halt, яка зупиняє систему і перезавантажує комп'ютер.

Якщо будь-яка з цих команд викликається в той момент, коли система працює на рівні виконання, відмінному від 0 або 6, то замість неї викликається відповідна команда shutdown.

Якщо ви хочете отримати додаткову інформацію про опціях цих команд і про те, як вони працюють, то зверніться до відповідних man-сторінок.

Файл / etc / inittab

Можливо, вам буде цікаво, чому натискання Ctrl-Alt-Delete в деяких операційних системах призводить до перезавантаження, і яким чином влаштовані всі ці рівні виконання. Ви пам'ятаєте поле id в файлі / etc / inittab? Так ось, в файлі / etc / inittab є ще кілька полів, а в файлової системі присутній набір сценаріїв ініціалізації, розташованих в каталогах, таких як rc1.d або rc5.d; цифра означає рівень виконання, на якому виконуються сценарії з відповідною директорії. У лістингу 8 показано повне вміст файлу inittab в нашій операційній системі Fedora 8.

Лістинг 8. Повний вміст файлу inittab в ОС Fedora 8

# # Inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, <[email protected]> # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id: 5: initdefault: # System initialization. si :: sysinit: /etc/rc.d/rc.sysinit 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 # Trap CTRL-ALT-DELETE ca :: ctrlaltdel: / sbin / shutdown -t3 -r now # When our UPS tells us power has failed , assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf :: powerfail: / sbin / shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr: 12345: powerokwait: / sbin / shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1: 2345: respawn: / sbin / mingetty tty1 2: 2345: respawn: / sbin / mingetty tty2 3: 2345 : respawn: / sbin / mingetty tty3 4: 2345: respawn: / sbin / mingetty tty4 5: 2345: respawn: / sbin / mingetty tty5 6: 2345: respawn: / sbin / mingetty tty6 # Run xdm in runlevel 5 x: 5 : respawn: / etc / X11 / prefdm -nodaemon

Як завжди, рядки, що починаються з # - це коментарі. Решта рядків містять кілька полів в наступному форматі:
ідентіфікатор_id: уровні_виполненія: дії: процес

Ідентифікатор id

Унікальний Ідентифікатор, что складається з 1-4 сімволів. У більш ранніх версіях Ідентифікатор складався НЕ более чем з двох сімволів, тому часто Використовують только два символи. Рівні Виконання Список рівнів Виконання, на якіх віконується дія, певне для даного ідентіфікатора. Если Рівні Виконання НЕ вказані, то дія віконується на всех рівнях. дію Одне з можливіть Дій, Пожалуйста буде Виконувати. процес Процес (может буті не вказано), Який винен буті запущений при віконанні Дії, визначеного в рядку.

Деякі дії, які можна вказати в файлі / etc / inittab, перераховані в таблиці 3. Про інші можливості inittab ви можете дізнатися з man-сторінок.

Таблиця 3. Деякі поширені дії inittab

Дія Призначення respawn Запустити знову процес, якщо він завершується. Зазвичай використовується для процесів getty, які відстежують входи в систему. wait Запустити процес при перемиканні на заданий рівень виконання і чекати його завершення перед запуском init. once Запустити процес при перемиканні на заданий рівень виконання. initdefault Вказує рівень виконання, перемикання на який здійснюється після завантаження системи. ctrlaltdel Запустити призначений процес при отриманні процесом init сигналу SIGINT (наприклад, при натисканні CTRL-ALT-DEL на системній консолі).

У лістингу 9 показано запис для комбінації Ctrl-Alt-Delete (фрагмент лістингу 8). Отже, тепер ви бачите, чому натискання комбінації Ctrl-Alt-Delete призводить до перезавантаження системи.

Лістинг 9. Відстеження натискання Ctrl-Alt-Delete

# Trap CTRL-ALT-DELETE ca :: ctrlaltdel: / sbin / shutdown -t3 -r now

Сценарії ініціалізації

У лістингу 8 ви могли помітити кілька рядків, подібних наступною:

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

У цьому прикладі init запустить сценарій (або команду) /etc/rc.d/rc з параметром 5 в момент перемикання на рівень виконання 5. Процес init чекатиме завершення цієї команди, і тільки потім будуть виконуватися якісь інші дії.

Ці сценарії, використовувані процесом init при запуску системи, зміні рівнів виконання або завершення роботи, зазвичай зберігаються в директорії /etc/init.d або /etc/rc.d. Набори символічних посилань, розташованих в директоріях rc n .d (для кожного рівня виконання n існує окрема директорія), керують запуском сценаріїв при перемиканні на певний рівень виконання або їх зупинкою при виході з цього рівня. Ці посилання починаються з символу K або S, за яким слідують двозначне число і ім'я служби, як показано в лістингу 10.

Лістинг 10. Сценарії ініціалізації

[Root @ pinguino ~] # find / etc -path "* rc [0-9] *. D / ??? au *" /etc/rc.d/rc2.d/S27auditd /etc/rc.d/rc2 .d / K72autofs /etc/rc.d/rc4.d/S27auditd /etc/rc.d/rc4.d/S28autofs /etc/rc.d/rc5.d/S27auditd /etc/rc.d/rc5.d / S28autofs /etc/rc.d/rc0.d/K72autofs /etc/rc.d/rc0.d/K73auditd /etc/rc.d/rc6.d/K72autofs /etc/rc.d/rc6.d/K73auditd /etc/rc.d/rc1.d/K72autofs /etc/rc.d/rc1.d/K73auditd /etc/rc.d/rc3.d/S27auditd /etc/rc.d/rc3.d/S28autofs [root @pinguino ~] # cd /etc/rc.d/rc5.d [root @ pinguino rc5.d] # ls -l ??? a * lrwxrwxrwx 1 root root 16 2008-04-07 11:29 S27auditd ->. ./init.d/auditd lrwxrwxrwx 1 root root 16 2008-04-01 7:51 S28autofs -> ../init.d/autofs lrwxrwxrwx 1 root root 15 2008-04-01 14:03 S44acpid -> ../ init.d / acpid lrwxrwxrwx 1 root root 13 2008-04-01 7:50 S95atd -> ../init.d/atd lrwxrwxrwx 1 root root 22 2008-04-01 7:54 S96avahi-daemon -> ../ init.d / avahi-daemon lrwxrwxrwx 1 root root 17 2008-11-17 13:40 S99anacron -> ../init.d/anacron

Тут ви бачите, що для служб audit і autofs на всіх рівнях виконання є записи K nn, а записи S nn - на рівнях виконання 3 і 5. Символ S означає, що служба повинна бути запущена при перемиканні на рівень виконання, а символ K означає , що вона повинна бути зупинена. Значення nn в імені посилання визначає пріоритетний порядок, в якому служби повинні запускатися або зупинятися. У цьому прикладі служба audit запускається раніше служби autofs, а зупиняється пізніше.

Для отримання додаткової інформації зверніться до man-сторінок init і inittab.

Init і Upstart

Як бачите, в основі традиційного методу завантаження Linux-системи лежить процес init операційної системи UNIX System V. В цьому випадку спочатку завантажується RAM-диск (initrd), а потім управління передається програмі init, яка зазвичай встановлюється в складі пакету sysvinit. Потім програма init запускає в заздалегідь визначеному порядку ряд сценаріїв для завантаження системи. Якщо в процесі завантаження якісь компоненти виявляються недоступними, то процес init чекає, поки вони стануть доступними. Це коректно працює на комп'ютерах, в момент завантаження яких всі пристрої вже підключені і відомі операційній системі. Однак при використанні сучасних комп'ютерів з підтримкою технології "гарячої заміни", мережевих файлових систем і навіть деяких мережевих плат, які можуть бути недоступні в момент завантаження, можуть виникнути нові проблеми. Звичайно ж, чекати, поки система визначить обладнання, яке може бути недоступним (відносно) довгий час, може виявитися не кращим варіантом.

Альтернативний процес ініціалізації під назвою upstart був вперше представлений в 2006 році в дистрибутиві Ubuntu 6.10 (Edgy Eft). На сьогоднішній день upstart витіснив традиційний процес init в Ubuntu і Fedora та інших дистрибутивах Linux. Проте, процес init ще зберігся, а повна потужність upstart можливо, не реалізована повністю.

На відміну від постійних наборів сценаріїв ініціалізації, що використовувалися в більш ранніх дистрибутивах, підсистема upstart заснована на подіях. Події можуть наступати при додаванні або видаленні обладнання, запуск або зупинку завдань, а також в результаті роботи інших системних процесів. Події використовуються для запуску завдань або служб, разом відомих як завдання. Так, наприклад, підключення USB-накопичувача може змусити службу udev послати системі подія block-device-added, яке призведе до запуску певної задачі для перевірки файлу і монтування файлової системи накопичувача (якщо це можливо). Іншим прикладом може бути Web-сервер Apache, підготовлений до запуску тільки в тому випадку, якщо доступні підключення до мережі та все файлові ресурси.

Програма ініціалізації upstart заміщає процес / sbin / init. Завдання upstart визначені в директорії / etc / init і її піддиректоріях. В даний час підсистема upstart обробляє файл / etc / inittab і системні сценарії запуску System V. В таких дистрибутивах, як останні випуски Fedora, файл / etc / inittab, ймовірно, містить тільки запис з ідентифікатором id для дії initdefault. У новітніх дистрибутивах Ubuntu за замовчуванням файл / etc / inittab відсутня, хоча ви можете створити його, якщо захочете визначити рівень виконання за замовчуванням.

Також в підсистемі upstart є команда initctl, яка дозволяє взаємодіяти з демоном ініціалізації upstart. Це дозволяє запускати або зупиняти завдання, виводити список завдань, отримувати їх статуси, генерувати події, перезапускати процес ініціалізації і так далі. У лістингу 11 показано, як використовувати initctl для отримання списку завдань upstart в операційній системі Fedora 13.

Лістинг 11. Взаємодія з демоном ініціалізації upstart за допомогою initctl

[Ian @ echidna ~] $ initctl list rc stop / waiting tty (/ dev / tty3) start / running, process 1486 tty (/ dev / tty2) start / running, process 1 484 tty (/ dev / tty6) start / running, process тисячу чотиреста дев'яносто-дві tty (/ dev / tty5) start / running, process 1490 tty (/ dev / tty4) start / running, process 1 488 plymouth-shutdown stop / waiting control-alt-delete stop / waiting system-setup-keyboard start / running , process 1000 readahead-collector stop / waiting vpnc-cleanup stop / waiting quit-plymouth stop / waiting rcS stop / waiting prefdm start / running, process 1479 init-system-dbus stop / waiting ck-log-system-restart stop / waiting readahead stop / waiting ck-log-system-start stop / waiting start-ttys stop / waiting readahead-disable-services stop / waiting ck-log-system-stop stop / waiting rcS-sulogin stop / waiting serial stop / waiting

Щоб дізнатися більше про підсистему upstart, зверніться до розділу ресурси .

На цьому наш огляд рівнів виконання, зупинки і перезавантаження операційної системи Linux завершено.

Ресурси для скачування

Схожі тими

  • Оригінал статті: Learn Linux, 101: Runlevels, shutdown, and reboot (EN).
  • На Web-сайті програми сертифікації LPIC (EN) ви знайдете докладні цілі, списки завдань і зразкові питання всіх трьох рівнів сертифікації на адміністратора Linux-систем професійного інституту Linux. Зокрема, на цьому сайті представлені цілі іспитів LPI 101 и LPI 102 станом на квітень 2009 року. Завжди звертайтеся до Web-сайту програми сертифікації LPIC, щоб дізнатися останні цілі.
  • перегляньте всю серію статей для підготовки до іспитів інституту LPI (EN) на сайті developerWorks, заснованих на попередніх цілях, визначених до квітня 2009 року, щоб вивчити основи адміністрування Linux і підготуватися до іспитів для отримання сертифікату адміністратора Linux.
  • Керівництво Linux BootPrompt-HowTo (EN) допоможе вам розібратися з завантажувальними параметрами.
  • Для отримання додаткової інформації про підсистему upstart прочитайте огляд підсистеми upstart (EN).

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

Jsp?
Ви пам'ятаєте поле id в файлі / etc / inittab?
D / ?
5.d] # ls -l ?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью