Остановка - это то же самое, что «shutdown -H», и выключение - то же самое, что и «shutdown -P»?

15

Я не нашел четкого ответа на различия между двумя вариантами команды shutdown.

Это так haltже, как shutdown -Hи так poweroffже, как shutdown -P?

StackExchange для всех
источник
Связанный: unix.stackexchange.com/questions/8690/...
ОДС

Ответы:

26

Это немного исторически.

haltбыл использован до ACPI (который сегодня отключит питание для вас) *. Это приведет к остановке системы, а затем выведет сообщение о том, что «теперь можно выключить питание». В то время существовали физические переключатели вкл / выкл, а не комбинированная кнопка питания, управляемая ACPI современных компьютеров.

poweroff, естественно, остановит систему и затем отключит питание ACPI.

* В наши дни haltдостаточно умен, чтобы автоматически звонить, poweroffесли ACPI включен. Фактически, они функционально эквивалентны сейчас.

bahamat
источник
Интересно: на моем ноутбуке, на котором работает Gentoo, /sbin/poweroffесть символическая ссылка на /sbin/halt.
phunehehe
Спасибо, Багамат! Я говорю о двух вариантах команды shutdown. Является ли команда haltтакой же, как shutdown -H, и команда poweroffтакая же, как shutdown -P? @phunehehe тоже.
StackExchange для всех
@phunehehe: Да, я был почти уверен, что они теперь такие же, но не удосужились посмотреть.
Багамат
@Tim: Да, эти флаги совпадают с вызовом команды. Как я уже сказал, это в значительной степени историческая разница.
Багамат
1
Назад в день, haltиспользуется , чтобы сделать это. Нет правильного отключения, просто остановите то, что машина делала прямо там и сейчас. Это была общая проблема, sync;sync;sync;haltчтобы убедиться, что все буферы были записаны на диск.
Куртм
15

Они не одно и то же, просто очень тесно связаны. На практике, если вы не хотите , чтобы указать конкретное время для отключения или заставить немедленно нечистые перезагрузки / останов / выключение питания, это действительно не имеет значения , запускать ли вы 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, конечно, переходит в состояние остановки, а затем перезагружает компьютер.

Кстати, по умолчанию, как правило, либо poweroffили reboot, но вы можете использовать -Hв качестве аргумента, shutdownчтобы сделать его вместо этого. Это не очень полезно для Linux-систем на базе ПК (но полезно на машинах, таких как sparc-блоки, которые имеют монитор загрузки микропрограммы. Возможно, это может оказаться полезным на более новых машинах с командной строкой EFI).

саз
источник
1
Это очень ориентированный на Linux ответ на вопрос, не относящийся к конкретной операционной системе. Не все shutdownкоманды имеют понятие уровней запуска. shutdownв основном не вызывает halt/ reboot/ poweroff; по иронии судьбы, именно в некоторых системах, отличных от Linux, эта мудрость остается верной и сегодня. И где символические ссылки указывают не обязательно halt; Мало того, что в некоторых наборах инструментов они вообще не являются символическими ссылками. См. Unix.stackexchange.com/a/196471/5132 для более подробной информации.
JdeBP