Перезавантаження і зупинка системи - розбираємося в роботі unix-систем

UNIX-системи зберігають буфери змін в пам'яті і лише зрідка записують їх на диск. Це прискорює виконання операцій дискового введення-виведення, але також робить систему більш схильною до втрат даних у разі раптових зависань.

Раніше UNIX-системи були дуже педантичні щодо процедури виключення. Сучасні системи більш терпимі, але все ж по можливості краще коректно завершувати роботу. Неправильне виключення системи може призвести до появи труднообнаружіваемих, неочевидних помилок, а іноді і до повного краху.

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

На відміну від початкового завантаження, яка здійснюється одним-єдиним способом, останов і перезавантаження системи можна виконати по-різному:

дати команду shutdown;

використовувати команди halt і reboot (в BSD-системах і Linux);

послати програмі init сигнал TERM;

змінити рівень виконання програми init за допомогою команди telinit (в системах сімейства System V);

знищить процес init

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

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

Команда shutdown: коректний спосіб зупинки системи

Команда shutdown - найбезпечніший і найбільш коректний спосіб зупинити або перезавантажити систему або повернуться в одного користувача режим. На жаль, важко знайти постачальника, який би «не доклав руку» до її аргументів. Ми розглянемо цю команду в загальному, а потім приведемо зведення синтаксису і аргументів, які стануть в нагоді при роботі в будь-якої з описуваних систем.

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

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

У табл. 2.6 перераховані аргументи командного рядка команди shutdown для шести розглянутих систем. Прочерк означає варіант за замовчуванням.

Таблиця 2.6. Багатолика команда shutdown

Команда halt: більш простий спосіб зупинки

Команда halt виконує всі основні операції, необхідні для зупинки системи. Щоб викликати цю команду, можна в командному рядку вказати shutdown -h або безпосередньо halt. Команда halt реєструє в журнальному файлі подія зупинки, знищує неіснуючі процеси, виконує команду sync (вона, в свою чергу, здійснюється виклик sync), чекає завершення операцій дискової записи, а потім припиняє роботу ядра.

При вказівці команди halt -n системний виклик sync пригнічується. Ця команда використовується після відновлення кореневого розділу командою fsck. щоб ядро ​​не могло затерти виправлення старими версіями розділу, що зберігаються в кеші. Команда halt -q ініціює майже негайний останов без синхронізації, знищення процесів і реєстрації подій. Прапор -q використовується рідко.

Команда reboot: швидкий перезапуск

Команда reboot майже ідентична команді halt. Різниця полягає в тому, що система перезавантажується, а не зупиняється. Режим перезавантаження викликається також командою shutdown -r. крім цього, команда shutdown підтримує прапори -n і -q.

Передача програмі init сигналу TERM

Результати знищення програми init непередбачувані і в більшості випадків дуже шкідливі. Перед тим як посилати цій програмі будь-якої сигнал, зверніться до документації. Коли BSD-версія програми init отримує сигнал TERM, вона зазвичай знищує всі призначені для користувача процеси, демони, процеси getty і переводить систему в одного користувача режим. Те ж саме робить команда shutdown.

Для того щоб послати процесу сигнал, потрібно за допомогою команди ps дізнатися ідентифікатор цього процесу. Програма init - це завжди процес номер один. З метою відправки сигналу скористайтеся командою kill:

Команда telinit: зміна рівня виконання програми init

В системах, де програма init підтримує кілька рівнів виконання, можна за допомогою команди telinit дати програмі вказівку перейти на конкретний рівень. Наприклад, команда

переводить систему в одного користувача режим в Solaris і HP-UX. У Red -Hat необхідно вказати 1, а не S, інакше буде запущений інтерпретатор shell з правами користувача root. а сам рівень змінений не буде:

Те ж саме можна зробити за допомогою команди

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

Команда telinit найбільш корисна при перевірці змін, внесених в файл inittab. При наявності прапора -q команда змусить програму init повторно прочитати цей файл.

Знищення процесу init

Процес init настільки важливий для роботи системи, що якщо його знищити за допомогою команди kill -KILL або kill-9. то більшість систем автоматично перезавантажиться (деякі ядра при цьому просто видають повідомлення про паніку - фатальну помилку). Це дуже «грубий» спосіб перезавантаження. Краще користуватися командами shutdown і reboot.

Проект microG випустив збірку LineageOS з альтернативної реалізацією сервісів Google

В рамках збірки LineageOS for microG підготовлений варіант платформи LineageOS (продовження розвитку CyanogenMod), в якому пропонується альтернативна вільна реалізація сервісів Google.

Фонд СПО повідомив про витік даних користувачів через забутої резервної копії

Фонд вільного ПЗ попередив про інцидент, в результаті якого в публічному доступі виявилася деяка що не підлягає розголосу інформація, пов'язана з проектом Defective By Design, включаючи.

Сформовано коригувальний реліз спеціалізованого браузера Tor Browser 7.0.9, орієнтованого на забезпечення анонімності, безпеки і приватності. Браузер побудований на кодової базі Firefox і.

Проти організації Software Freedom Conservancy поданий позов про відкликання торгової марки

Організація Software Freedom Conservancy (SFC) повідомила про отримання позову про відкликання торгової марки, ініційованому організацією Software Freedom Law Center (SFLC). У позові стверджується, що торгова.

Схожі статті