Навіщо нам потрібна функція перезавантаження у різних бінарних файлах?


12

Навіщо нам потрібна функція перезавантаження у різних бінарних файлах?

shutdown -r

і

reboot

Або вони в чомусь відрізняються?


1
Дивіться про unix.stackexchange.com/questions/8690/… про відмінність - команди можуть поводитися по-різному залежно від операційної системи (але, як правило, роблять те ж саме в Linux).
Будь ласка, продовжуйте

Як зазначено нижче та детально пояснено на unix.stackexchange.com/a/196014/5132 , припущення цього питання є помилковим для системних операційних систем Linux. Це не різні бінарні файли в таких системах.
JdeBP

Відповіді:


15

Нам обом вони не потрібні, але ми маємо їх як через історію Unix, так і через безліч версій.

З відповідних чоловічих сторінок:

  • Утиліта відключення з'явилася в 4.0BSD.
  • Утиліта перезавантаження з’явилася у версії 6 AT&T UNIX.

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

вимкнення дозволяє вказати тимчасовий аргумент (наприклад, перезапустити через 5 хвилин) і дозволяє зробити багато речей, крім перезавантаження, включаючи:

  • ви можете просто запускати користувачів, а насправді не вимикати користувачів
  • ви можете перевести систему спати замість вимкнення
  • ви можете просто відключитись без перезавантаження (як команда зупинки)
  • ви можете включити в систему користувацьке попереджувальне повідомлення для користувачів

Тим НЕ менше, якщо ви просто хочете , щоб перезавантажити систему зараз, це простіше набрати rebootніж shutdown -r now.


1
Факт забав: Деякі версії shutdownвикористовуються зараз за замовчуванням. Не намагайтеся будь-коли отримати допомогу щодо відключення shutdown -h, особливо не на сервері десь у центрі обробки даних.
Residuum

6

Дві команди виконують щось по-іншому, однак вони можуть в кінцевому підсумку дзвонити один одному, тому вони, здається, роблять те саме!

rebootбуде викликати ядро ​​для фактичного запуску апаратного перезавантаження. Однак це зробить це лише в тому випадку, якщо система готова до відключення - всі демони і користувацькі процеси повинні бути зупинені, файлові системи відключені і т. Д. Отже, вона перевіряє рівень запуску системи, і якщо це не 0 або 6, то вона фактично викликає shutdownкоманда для вас.

shutdownвикликає зміну рівня запуску системи. Зміна рівня запуску (до 0 для зупинки або 6 для перезавантаження) запускає безліч скриптів у /etc/rc0.d або rc6.d, які закривають демон, демонтувати файлові системи тощо. Нарешті ці сценарії викликають haltабо reboot- цього разу система перебуває у правильний рівень запуску, і вони вказують ядру перезавантажити (або зупинити).


6

Окрім того, що писав iconoclast, існує важлива відмінність між двома програмами: shutdownє в /sbin, а rebootє в /usr/bin.

Чому це має значення, запитаєте ви? Я скажу вам.

Це /usrте, що не повинно бути доступним, поки система не завантажиться достатньо далеко, щоб система була мінімально функціональною. Каталоги верхнього рівня , які ніколи звичайно не монтуються на окремих файлових системах - /bin, /etc, /sbinі т.д. - як очікується, буде доступні в той час як система досягає цього мінімально корисне стан. Існують різні наслідки цієї конструкції; наприклад, поганий стиль написання пункту "стоп" для сценарію init SysV, який використовує програми, /usr/binякщо є альтернатива в /binабо /sbin.

shutdown- це ключова утиліта, яка завжди є. rebootє лише зручною утилітою.


1
rebootзнаходиться в /sbinDebian (з SysVinit) і Ubuntu (з upstart).
Жиль 'ТАК - перестань бути злим'

Гаразд, так метавідповідь: знай свою систему. :) Найчастіше я використовую CentOS.
Warren Young

Те саме для Arch (systemd), обидва в / sbin
ромашка

Дійсно, в системних операційних системах Linux жодна з них не є ключовою утилітою, так як при systemd всі ці команди є (як це має системний doco) командами "сумісності". Дійсно, передумова питання хибна. Їх немає в різних двійкових файлах. Докладніше див. Unix.stackexchange.com/a/196014/5132 .
JdeBP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.