Відповіді:
Це трохи історично.
halt
використовувався до ACPI (який сьогодні відключить живлення для вас) *. Це зупинить систему, а потім надрукує повідомлення про те, що "зараз нормально вимкнути живлення". Тоді були фізичні комутатори / вимикачі, а не комбіновані кнопки живлення ACPI, керовані сучасними комп'ютерами.
poweroff
, природно, зупинить систему і відключить живлення ACPI.
* Ці дні halt
досить розумні, щоб автоматично дзвонити, poweroff
якщо ACPI увімкнено. Насправді вони функціонально рівноцінні зараз.
/sbin/poweroff
є симпосилання на /sbin/halt
.
shutdown
. Чи команда halt
така сама, як shutdown -H
і команда poweroff
така ж, як shutdown -P
? @phunehehe теж.
halt
раніше це робилося. Ніякого впорядкованого відключення, просто зупиніть те, що машина робила тут і там. Видання було загальним, щоб sync;sync;sync;halt
переконатися, що всі буфери були записані на диск.
Вони не одне і те ж, просто дуже тісно пов’язані між собою. На практиці, якщо ви не хочете вказати конкретний час для вимкнення або змусити негайно нечисто перезавантажити / зупинити / переключити, це насправді не має значення, ви біжите shutdown -h
чи halt
... або shutdown -r
проти reboot
. У минулому речі не були дуже приємними, але це так, як це працює зараз (багато можливостей для неоднозначності чи помилок користувача було видалено / згладжено).
/sbin/shutdown
робить багато "очищення" таких речей, як сповіщення користувачів, блокування нових входів під час вимкнення системи. Також можна сказати про вимкнення системи в певний час або за XX хвилин - попереджаючи, що користувачі, що входили так часто, про майбутнє відключення.
Він також змінює рівень запуску на 0
( halt
/ poweroff
) або 6
( reboot
), що запускає систему для зупинки запущених служб, демонтажу дисків тощо під час підготовки до фактичного зупинки, переключення чи перезавантаження.
Коли все, що зроблено, він викликає /sbin/halt
, /sbin/reboot
або /sbin/poweroff
( reboot
і poweroff
зазвичай є посиланнями на halt
, що інтерпретує їх як halt -r
і halt -P
відповідно).
Однак зауважте, що якщо halt
/ reboot
/ poweroff
викликається, коли система НЕ знаходиться в рівні запуску, 0
або 6
тоді вони будуть закликати shutdown
виконувати свою роботу, якщо не використовується параметр -f
або force
.
(Деталі того , як рівень запуску інтерпретується може варіюватися в залежності від дистрибутива до дистрибутива, але 0
і 6
використовуються , як описано тут , в Debian і Debian-похідних , як Ubuntu).
Зверніться до сторінок для shutdown
і halt
для отримання додаткової інформації.
Нарешті, відмінність між halt
та poweroff
станом полягає в тому, що halt
робиться все, щоб фактично вимкнути машину (на деяких видах обладнання це означає, що вона потрапляє в завантажувач ПЗУ чи подібне. На більшості апаратних засобів він просто зупиняється), в той час як poweroff
завершує цей останній крок і вимикається. reboot
звичайно, переходить у стан зупинки, а потім перезавантажує комп'ютер.
BTW, типово типово є або, poweroff
або reboot
, але ви можете використовувати -H
як аргумент, щоб shutdown
зупинити його замість. Це не дуже корисно для ПК на базі linux (але корисно на машинах, як коробки sparc, на яких є монітор завантаження програмного забезпечення. Можливо, це може стати в нагоді на нових машинах з командним рядком EFI).
shutdown
команди мають поняття рівнів запуску. shutdown
здебільшого не посилається halt
/ reboot
/ poweroff
; За іронією долі, це стосується кількох нелінукс- систем, де ця отримана мудрість залишається вірною і сьогодні. І там, де символічні посилання вказують не обов'язково halt
; Мало того, що в деяких наборах інструментів вони зовсім не є символічними посиланнями. Див. Unix.stackexchange.com/a/196471/5132 для отримання більш детальної інформації.