it-swarm-ru.tech

В чем разница между командами останова и выключения?

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

100
wassimans

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

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

shutdown -h now

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

shutdown -r +30 "Planned software upgrades"

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

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

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

80
PleaseStand

Прошлое

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

Команды BSD halt и ​​reboot были низкоуровневыми, радикальными и немедленными. внимательным способом выключения системы BSD была команда shutdown, которая выполняла все действия, которые ожидаются: wall сообщения пользователям, сервисы грациозно уничтожены, записи в журналах записаны, логины отключены и т. д.

В то время как BSD были в основном источником возникшей мудрости, что "shutdown execs halt/reboot", и что последние должны были использоваться с осторожностью; это был мир System 5, где люди усвоили противоположную привычку: halt/reboot были просто удобными сокращениями и ничего более: /usr/ucb/halt из "Пакета совместимости BSD" было не отличается от shutdown -h. В итоге они оба сделали init 0.

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

Cегодня

В настоящее время у нас есть ряд возможных наборов инструментов для управления системой. У BSD все еще есть свой набор инструментов, хотя он был очищен от любых возможных AT & Tism в 1990-х. Микель ван Смуренбург в 1992 году (пере) написал Linux init + rc и ​​связанные с ним инструменты, которые люди теперь называют "System 5 init", хотя на самом деле это не так. программное обеспечение из UNIX System 5 (и не только init). Также есть systemd , pstart и nosh , каждая из которых имеет свои собственные реализации из 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 являются одной программой . Это на самом деле собственная _d_d_d_d_d____________________in_d_Rate_, и это программа systemctl. Он имеет несколько синтаксических анализаторов командной строки для различных синтаксисов командных строк этих команд, а также свой собственный, но после этого в основном встраивается в один путь кода внутри. Нет никакой разницы между использованием halt и ​​его параметров команды для запуска действия и использованием shutdown и ​​его параметрами команды для запуска того же действия.

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

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

BSDs

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

В наборах инструментов BSD shutdown/poweroff традиционно заканчивали тем, что вызывали halt/reboot для принятия окончательного изменения состояния системы. (Часто в наши дни неверные) получили мнение, что "shutdown execs halt/reboot" на самом деле все еще сохраняется в NetBSD и OpenBSD. Но в FreeBSD/TrueOS/DragonFlyBSD это только в том случае, если используется опция -o. На этих BSD обе из этих программ обычно определяют конечное состояние системы изменить, отправив различные сигналы (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

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

Таким образом, нет никакой разницы (отсутствует --force) Между командой halt и ​​командой shutdown (с эквивалентной опцией) в этом наборе инструментов, так как этот набор "BSD/System 5 "Совместимость" - это просто тонкий слой над слоем shutdown.

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

Набор выскочек

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

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

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

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

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

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

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

52
JdeBP

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

11
user591

Для тех, кто использует AWS EC2: в AWS shutdownостанавливается экземпляр, когда haltзавершается его.

3
dveim

В Linux "halt" и "reboot" являются псевдонимами команды shutdown - shutdown -h а также shutdown -r соответственно. Выключение без слов обычно предполагает -h.

0
Shadur