Відповіді:
Як правило, користується shutdown
командою . Це дозволяє затримати час та попереджати повідомлення перед вимкненням або перезавантаженням, що важливо для системного адміністрування багатокористувацьких серверів оболонки; він може надати користувачам попереднє повідомлення про час простою.
Таким чином, команду відключення потрібно використовувати так, щоб негайно зупинити / вимкнути комп'ютер (як мінімум на Linux та FreeBSD):
shutdown -h now
Або перезавантажити його за допомогою спеціального попереднього попередження за 30 хвилин:
shutdown -r +30 "Planned software upgrades"
Після затримки shutdown
повідомляє init
про зміну до рівня запуску 0 (зупинка) або 6 (перезавантаження). (Зауважте, що пропуск -h
або -r
призведе до того, що система перейде в режим однокористувача (runlevel 1), що вбиває більшість системних процесів, але насправді не зупиняє систему; вона все ще дозволяє адміністратору залишатися ввійшли в систему як root.)
Після того, як системні процеси були вбиті і файлові системи були відключені, система зупиняється / вимикається або перезавантажується автоматично. Це робиться з допомогою halt
або reboot
команди , яка синхронізує зміни в диски , а потім виконує фактичну HALT / вимикання або перезавантаження харчування.
У Linux, якщо halt
або reboot
запускається, коли система ще не почала процес відключення, вона буде викликати shutdown
команду автоматично, а не безпосередньо виконувати призначені дії. Однак у таких системах, як FreeBSD , ці команди спочатку заносять дію, wtmp
а потім негайно виконають зупинку / перезавантаження, без попереднього вбивства процесів чи демонтажу файлових систем.
halt
, reboot
і shutdown
програми , які викликають один одного. Є одна єдина програма з великою кількістю аналізаторів командного рядка, які переходять у один кодовий шлях всередині. Також немає рівнів запуску. Також вимкнення не переходить в режим єдиного користувача. Дійсно, сам режим користування перейменований. Докладніше див. Unix.stackexchange.com/a/196014/5132 .
У 1980-х роках BSDs було halt
, reboot
і shutdown
. Система 5 UNIX мала набір інструментів сумісності BSD. Але споконвічно вона мала свою, іншу shutdown
команду; і не мали halt
або reboot
взагалі. (У деяких варіантах System 5 були такі речі, як SCO XENIX haltsys
.)
BSD halt
і reboot
команди були низькорівневими, різкими і негайними. Уважним чином , щоб вимкнути систему BSD була shutdown
команда, яка зробила все те , що один очікує траплятися: wall
повідомлення для користувачів, послуги витончено убитий, записи , написані лаг, логіни відключені, і так далі.
У той час як BSD були значною мірою там, де отримана мудрість походить " shutdown
execs halt
/ reboot
", і що останні повинні використовуватися з обережністю; Це був світ System 5, де люди засвоїли протилежну звичку, що halt
/ reboot
були просто зручними скороченнями і нічого більше: /usr/ucb/halt
з "Пакету сумісності BSD", це не мало нічого іншого по суті shutdown -h
. Вони обоє закінчилися робити init 0
.
halt
. 1982-05-11. 4.2BSD посібник.haltsys
. 2005-06-03. Керівництво SCO OpenServer.На сьогоднішній день у нас є низка можливих наборів інструментів управління системою. У BSD все ще є набір інструментів, хоча і очищений від будь-яких можливих AT & Tism в 1990-х. Мікель ван Смооренбург у 1992 році (пере-) написав Linux init
+ rc
та пов'язані з ними інструменти, які зараз люди називають «Система 5 init», хоча це насправді не програмне забезпечення від UNIX System 5 (і це не просто init
). Там також Systemd , вискочка , і перекус , кожен з яких має свої власні реалізації з halt
, reboot
, fasthalt
, fastboot
і так далі.
Набори інструментів також зростали та змінювалися. Зараз poweroff
в операційних системах 1980-х років команда відсутня, оскільки центральні процесори на більшості сучасних машин не мали можливості контролювати джерела живлення. Набори інструментів Linux, зокрема, мали команди BSD; але, як і інструменти сумісності BSD в UNIX System 5, вони не є точними робочими силами, і все значною мірою згладжено.
Це уплощение призвело нас до точки , де halt
і shutdown
знаходяться в основному те ж саме. Але точні деталі різняться від набору інструментів до набору інструментів, і механіка кожного набору інструментів трохи відрізняється.
Він також навів нас до трохи незручному положенню , в якому ця команді набір став настільки схиблений варіантами сумісності , що тепер дозволяє людям дати комп'ютерів самостійно суперечливі інструкції , як reboot --halt
і poweroff --reboot
, як я помітив на сторінці керівництва для Nosh halt
, fasthalt
, reboot
, fastboot
, і poweroff
команди. ☺
halt
, reboot
, poweroff
, telinit
, І shutdown
це все одна програма . Це насправді власна systemctl
програма systemd . У ньому є кілька аналізаторів командного рядка для різних синтаксисів командних рядків цих команд, а також їх власних, але після цього значною мірою перетворюється на один шлях коду всередині. Немає різниці між використанням halt
та його командними параметрами для запуску дії та використанням shutdown
та параметрами її команд для запуску тієї самої дії.
systemd не вважає режим порятунку (саме те, що систематизовані люди перейменували в режим єдиного користувача ), не працює в режимі вимкнення, і він не доступний жодній із цих команд. Без варіантів shutdown now
- те саме, що poweroff
.
BSD значною мірою зберігають свою семантику 1980-х років. halt
і shutdown
, отже, дуже не еквівалентні у своїх наборах інструментів. halt
і reboot
є однією єдиною програмою; і все ще низький рівень, негайний і різкий. Беручи під увагу , shutdown
і poweroff
, також однієї програми, зробити все благорассудітельние речі , як заплановане вимкнення, написання wall
повідомлень, протоколювання дій, виводячи з ладу входу, і так далі.
У наборах інструментів BSD shutdown
/ poweroff
традиційно закінчується викликом halt
/ reboot
для прийняття остаточної зміни стану системи. (Часто в даний час некоректне) отримав мудрість, що " shutdown
execs halt
/ reboot
" насправді все ще належить до NetBSD та OpenBSD. Але на FreeBSD / TrueOS / DragonFlyBSD справа лише в тому випадку, якщо використовується -o
опція. На цих BSDs, і з цих програм зазвичай прийняти остаточне зміна стану системи шляхом передачі різних сигналів ( INT
, USR1
і USR2
) для обробки # 1. init
чи працює все управління державою в цих системах.
На всіх з них, варіант менш shutdown now
не є еквівалентною будь-який з halt
, reboot
або poweroff
. Він переходить у режим єдиного користувача BSD , з якого можна перейти назад до багатокористувацького режиму .
shutdown
. Посібник із системного менеджера . Сторінки посібника NetBSD. 2011-11-04.reboot
,halt
. Сторінки керівництва OpenBSD. 2016-09-03.shutdown
. Сторінки посібника FreeBSD. 2016-09-21.reboot
, halt
, fastboot
,fasthalt
. Сторінки посібника FreeBSD. 2017-03-19.shutdown
. Посібник із системного менеджера . Сторінки керівництва DragonFlyBSD. 2016-09-29.reboot
, halt
, fastboot
,fasthalt
. Посібник із системного менеджера . Сторінки керівництва DragonFlyBSD. 2016-09-29.У Nosh управління системою набору інструментів, halt
, fasthalt
, poweroff
, fastpoweroff
, reboot
, і fastboot
все одна програма. Це зворотний хід сумісності, який зазвичай просто прив’язується до нього shutdown
, протилежний отриманій мудрості. --force
Варіант робить ланцюг system-control
замість цього.
Таким чином, --force
між цією halt
командою та shutdown
командою (з еквівалентною опцією) у цьому наборі інструментів немає різниці (відсутня ) , оскільки цей набір команд "сумісність BSD / System 5" - це просто тонкий прошарок у верхній частині shutdown
.
shutdown
. сторінки з набором інструментів для набору інструментів. Програмне забезпечення.telinit, init, reboot, halt, haltsys, powercycle, poweroff, … fastboot, fasthalt, fastpowercycle, fastpoweroff, …
сторінки з набором інструментів для набору інструментів. Програмне забезпечення.Як і у випадку з nosh, у наборі інструментів управління на початку системи застосовується протилежна отриманій мудрості BSD. halt
,, reboot
і poweroff
всі вони є однією програмою, яка зазвичай ланцюжок shutdown
; якщо не використовується --force
параметр, що змушує reboot()
систему робити сам виклик.
Отже, знову ж таки, немає різниці (відсутня --force
) між halt
командою та shutdown
командою (з еквівалентною опцією) у цьому наборі інструментів. Знову ж таки, без опцій shutdown now
(які жоден із halt
, reboot
або не poweroff
може закінчитися викликом, оскільки всі встановлені параметри) приводить систему в єдиний користувацький режим, а не вимикає її.
shutdown
(8) . Сторінки керівництва Ubuntu.reboot
(8), halt
(8), poweroff
(8) . Сторінки керівництва Ubuntu.init
+ rc
набір інструментівЗнову ж таки, в цьому наборі інструментів застосовується протилежна отримана мудрість BSD halt
і reboot
просто ланцюг на shutdown
- якщо тільки система вже не працює або не зупинить "запущені рівні", і в цьому випадку ці команди фактично вводять остаточну зміну стану системи. shutdown
своєю чергою прикуває до init
.
Отже, знову ж таки, різниці немає (якщо система вже значною мірою не вимкнута) між halt
і shutdown
тому, що перший просто викликає останній. І так, знову ж таки, без варіантів shutdown now
(які жоден із halt
, reboot
або poweroff
може закінчитися викликом, оскільки всі встановлені параметри) приводять систему в єдиний користувальницький режим, а не вимикають її.
Я підозрюю, що це дещо залежить від того, яку версію UNIX / Linux ви використовуєте. У Centos (і я очікую інших сучасних Linux) зупиняйте виклики (за умови, що ви не на рівні 0 або 6), так що ваша система буде закрита. На Solaris 10 зупинка є більш жорстокою, вона просто вимиває кешові диски та відключає повноваження системи - не робиться спроб запустити будь-які сценарії чи вимкнути SMF- засоби.
Для тих, хто використовує AWS EC2: на AWS shutdown
зупиняє екземпляр, коли він halt
припиняє його.
У Linux «привал» і «перезавантаження» є псевдонімами команди виключення - shutdown -h
і shutdown -r
відповідно. Відключення Bareword зазвичай передбачає -h.
aliases
в сенсі псевдонімів оболонки, але так, в halt
основному це лише дзвінки shutdown -h
та reboot
запуски shutdown -r
. Зауважте, що якщо ви передаєте -f
параметр (сила) до halt
або reboot
, не викликається. shutdown
sendmail
команди до цього моменту - Як і у MTA, це насправді не має значення, яку систему init ви використовуєте, тому що всі вони розпізнають shutdown
і halt
як таку.
sendmail
команді. Це як sendmail
команда, але не так, як ви думаєте.