Ответы:
Как правило, используется shutdown
команда . Это разрешает задержку и предупреждающее сообщение перед выключением или перезагрузкой, что важно для системного администрирования серверов многопользовательской оболочки; это может предоставить пользователям предварительное уведомление о времени простоя.
Таким образом, команда shutdown должна использоваться следующим образом, чтобы немедленно остановить / выключить компьютер (по крайней мере, в Linux и FreeBSD):
shutdown -h now
Или перезагрузите его с пользовательским предупреждением за 30 минут:
shutdown -r +30 "Planned software upgrades"
После задержки shutdown
указывает init
изменить уровень запуска на 0 (останов) или 6 (перезагрузка). (Обратите внимание, что пропуск -h
или -r
приведет к переходу системы в однопользовательский режим (уровень запуска 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
и связанные с ним инструменты, которые люди теперь называют «System 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 не рассматривает режим восстановления (то есть то, что люди 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
, страницы справочника nosh toolset. Softwares.telinit, init, reboot, halt, haltsys, powercycle, poweroff, … fastboot, fasthalt, fastpowercycle, fastpoweroff, …
страницы справочника nosh toolset. Softwares.Как и в случае с 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 «halt» и «reboot» являются псевдонимами команды shutdown - shutdown -h
и shutdown -r
соответственно. Выключение без слов обычно предполагает -h.
aliases
в смысле псевдонимов оболочки, но да, в halt
основном это просто вызовы shutdown -h
и reboot
запуск shutdown -r
. Обратите внимание, что если вы передадите -f
опцию (force) для halt
или reboot
, shutdown
она не вызывается .
sendmail
команде на данный момент - Как и в случае с MTA, на самом деле не имеет значения, какую систему инициализации вы используете, потому что все они будут распознавать и то shutdown
и другое halt
.
sendmail
команде. Это как sendmail
команда, но не так, как вы думаете.