В чем разница между командами Halt и Shutdown?

В чем разница между командами halt и shutdown ?

Как правило, используется команда shutdown . Он позволяет сообщать о задержке и предупреждении перед выключением или перезагрузкой, что важно для системного администрирования серверов многопользовательских серверов; он может предоставить пользователям предварительное уведомление о времени простоя.

Таким образом, команда shutdown должна использоваться как это, чтобы остановить / выключить компьютер немедленно (по крайней мере, на Linux и FreeBSD):

 shutdown -h now 

Или перезагрузите его с помощью настраиваемого предупреждения за 30 минут:

 shutdown -r +30 "Planned software upgrades" 

После задержки, shutdown сообщает init об изменении уровня запуска 0 ( shutdown ) или 6 (перезагрузка). (Обратите внимание, что omitting -h или -r приведет к переходу системы в однопользовательский режим (уровень запуска 1), который убивает большинство системных процессов, но фактически не останавливает систему, но по-прежнему позволяет администратору оставаться включенным в качестве пользователя root. )

После того, как системные процессы были убиты и файловые системы были размонтированы, система останавливает / выключает или перезагружается автоматически. Это делается с помощью команды halt или reboot , которая синхронизирует изменения с дисками, а затем выполняет фактическое прекращение / выключение или перезагрузку.

В Linux, если halt или reboot запускаются, когда система еще не запустила процесс выключения, она автоматически вызовет команду shutdown а не выполняет прямое ее действие. Однако в таких системах, как FreeBSD , эти команды сначала регистрируют действие в wtmp а затем немедленно выполнят остановку / перезагрузку, без первых процессов уничтожения или размонтирования файловых систем.

Прошлое

В 1980-х годах BSD halt , reboot и halt . Система 5 У UNIX был набор инструментов для совместимости с BSD. Но изначально у нее была своя собственная, отличная команда shutdown ; и вообще не halt или не reboot . (Некоторые версии System 5 имели такие вещи, как haltsys SCO haltsys .)

Команды halt и reboot BSD были низкоуровневыми, радикальными и немедленными. Важным способом отключения системы 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.
  • AT & T (1990). UNIX System 5 Release 4: Руководство по совместимости BSD / XENIX . Prentice Hall.
  • AT & T (1990). UNIX System 5 Release 4: Руководство системных админаторов . Prentice Hall.

Cегодня

В настоящее время у нас есть ряд возможных инструментов управления системой. У BSD все еще есть свой набор инструментов, хотя и очищенный от любых возможных AT & Tisms в 1990-х годах. Miquel van Smoorenburg в 1992 году (re) написал Linux init + rc и связанные с ним инструменты, которые теперь называют «System 5 init», хотя это не программное обеспечение из UNIX System 5 (и isn ' t просто init ). Есть также systemd , upstart и nosh , каждый из которых имеет свои собственные функции halt , reboot , fasthalt , fastboot и т. Д.

Инструменты также выросли и изменились. В настоящее время команда poweroff отсутствует в операционных системах 1980-х годов, поскольку центральные процессоры на большинстве современных машин не имеют возможности контролировать свои источники питания. Наборы инструментов Linux, в частности, приобрели команды BSD; но, как и инструменты совместимости с BSD в системе UNIX 5, они не являются точными рабочими инструментами, и все в значительной степени сглажено.

Это сглаживание привело нас к тому, что halt и shutdown в основном одинаковы. Но точные детали варьируются от набора инструментов до набора инструментов, а механика каждого набора инструментов немного отличается.

Это также привело нас к слегка затруднительному положению, когда этот набор команд стал настолько опрятным с вариантами совместимости, что теперь он позволяет людям давать компьютерные противоречивые инструкции, такие как reboot --halt и poweroff --reboot , как я заметил в руководстве страницы для команд nosh halt , fasthalt , reboot , fastboot и poweroff . ☺

Набор инструментов systemd

halt , reboot , poweroff , telinit и shutdownодна из программ . Это фактически система systemd. Он имеет несколько синтаксических команд командной строки для различных синтаксисов командной строки этих команд, а также их собственных, но после этого в значительной степени чередуется в один путь кода внутри. Нет никакой разницы между использованием halt и его параметрами команды для запуска действия и использования shutdown и его параметров команды для запуска того же действия.

systemd не рассматривает режим спасения (который является тем, что люди смены systemd переименовали в однопользовательский режим ) является выключенным системным состоянием, и он недоступен ни с одной из этих команд. Безрежимное shutdown now совпадает с shutdown now poweroff .

Дальнейшее чтение:

BSD

BSD в значительной степени сохраняют свою семантику 1980-х годов. halt и shutdown , таким образом, очень не эквивалентны в их инструментах. halt и reboot – это одна отдельная программа; и все еще являются низкими, немедленными и резкими. В то время как shutdown и poweroff , а также одна отдельная программа, выполняют все poweroff , такие как запланированное завершение работы, написание wall сообщений, протоколирование действий, отключение входа и т. Д.

В наборах BSD, shutdown / poweroff традиционно заканчивали тем, что вызывали halt / reboot чтобы принять окончательное изменение состояния системы. (Часто в настоящее время неверно) получил мудрость, что « shutdown execs halt / reboot » по-прежнему сохраняется на NetBSD и OpenBSD. Но на FreeBSD / PC-BSD / DragonFlyBSD используется только вариант -o . На этих BSD обе эти программы обычно принимают окончательное изменение состояния системы путем отправки различных сигналов ( INT , USR1 и USR2 ) для обработки # 1. init осуществляет управление системой в этих системах.

На всех из них безрезультатное shutdown now не эквивалентно halt , reboot или shutdown now poweroff . Он переходит в однопользовательский режим BSD, из которого можно перейти в многопользовательский режим .

Дальнейшее чтение:

  • shutdown . Руководство системного администратора . Страницы руководства NetBSD.
  • reboot , halt . Страницы руководства OpenBSD.
  • shutdown . Страницы руководства FreeBSD.
  • reboot , halt , fastboot , fasthalt . Руководство системного администратора . Страницы руководства DragonFlyBSD.

Набор инструментов nosh

В наборе инструментов управления nosh, halt , fasthalt , poweroff , fastpoweroff , reboot и fastboot – одна из программ. Это совместимость с обратной совместимостью, которая обычно просто shutdown , что противоположно полученной мудрости. Опция --force делает ее цепочкой для system-control .

Таким образом, нет никакой разницы между командой halt и командой shutdown (с эквивалентной опцией) в этом наборе инструментов, поскольку этот набор команд совместимости с BSD / System 5 – это просто тонкий слой прокладок поверх вершины shutdown .

Набор инструментов для выскочек

Как и в случае с nosh, в инструментах управления системой выскочки системы применяется противоположная принятая мудрость BSD. halt , reboot и poweroff – одна из программ, которая обычно работает в режиме shutdown ; если не используется параметр --force , что делает его самым системным вызовом reboot() .

Итак, опять же, нет никакой разницы (отсутствующей – --force ) между командой halt command and and shutdown (с эквивалентной опцией) в этом наборе инструментов. Кроме того, при shutdown now опции (без halt , reboot или shutdown now poweroff конечном итоге вызывается при установке всех параметров) система переходит в однопользовательский режим, а не отключается.

Дальнейшее чтение:

  • Скотт Джеймс Remnant. shutdown (8) . Страницы руководства Ubuntu.
  • Скотт Джеймс Remnant. reboot (8), halt (8), poweroff (8) . Страницы руководства Ubuntu.

Набор инструментов init + rc системы Linux 5

Опять же, в этом наборе инструментов противоположность принятой мудрости BSD применяется и halt и reboot просто цепью для shutdown – если система уже не находится в shutdown питания или не останавливает «уровни выполнения», и в этом случае эти команды фактически принимают окончательное изменение состояния системы. shutdown в свою очередь цепей к init .

Итак, опять же, нет разницы (если система уже в значительной степени отключена) между halt и shutdown потому что первая просто вызывает последнюю. И да, опять же, без shutdown now ( shutdown now ни одна halt , reboot или shutdown now poweroff может быть вызвана, поскольку все они устанавливают параметры) приводит к тому, что система переходит в однопользовательский режим, а не отключается.

Я подозреваю, что это несколько зависит от того, какую версию UNIX / Linux вы используете. В Centos (и я остановимся на других современных Linux) прекратит завершение вызовов (если вы не на уровне 0 или 6), поэтому ваша система будет отключена. В Solaris 10 halt более жестока, она просто очищает диски и отключает систему – не предпринимаются попытки запуска каких-либо скриптов или отключений smf .

В linux «halt» и «reboot» – это псевдонимы команды shutdown – shutdown -h и shutdown -r соответственно. Выключение бара обычно предполагает -h.