Как отмечено ниже и подробно объяснено по адресу unix.stackexchange.com/a/196014/5132 , предпосылка этого вопроса неверна в системных операционных системах Linux. Это не разные двоичные файлы в таких системах.
JdeBP
Ответы:
15
Мы не обязательно нуждаемся в них обоих, но у нас есть оба из-за истории Unix и его множества версий.
Из соответствующих страниц руководства:
Утилита отключения появилась в 4.0BSD.
Утилита перезагрузки появилась в Версии 6 AT & T UNIX.
Завершение работы более универсально и мощнее, а перезагрузка более удобна и легко запоминаема.
shutdown позволяет вам указать временный аргумент (например, для перезапуска через 5 минут) и помимо перезагрузки может выполнять множество действий, в том числе:
вы можете просто пнуть пользователей, а не выключить
Вы можете перевести систему в спящий режим вместо выключения
Вы можете просто завершить работу без перезагрузки (например, команда остановки)
Вы можете включить пользовательское предупреждение для пользователей в системе
Однако, если вы просто хотите перезагрузить систему сейчас, набрать ее легче, rebootчем shutdown -r now.
Интересный факт: некоторые версии shutdownсейчас используются по умолчанию. Не пытайтесь получить помощь для выключения shutdown -hкогда-либо, особенно не на сервере где-нибудь в центре обработки данных.
Residuum
6
Эти две команды делают что-то по-разному, однако в итоге они могут вызывать друг друга, поэтому они, похоже, делают одно и то же!
rebootвызовет ядро, чтобы фактически запустить аппаратную перезагрузку. Тем не менее, он будет делать это только в том случае, если система готова к выключению - все демоны и пользовательские процессы должны быть остановлены, файловые системы размонтированы и т. Д. Таким образом, он проверяет уровень запуска системы, и если он не равен 0 или 6, то он фактически вызывает shutdownкоманда для вас.
shutdownвызывает изменение уровня выполнения системы. Изменение уровня выполнения (0 для остановки или 6 для перезагрузки) запускает множество скриптов в /etc/rc0.d или rc6.d, которые закрывают демоны, демонтируют файловые системы и т. Д. Наконец, эти скрипты вызывают haltили reboot- на этот раз система находится в правильный уровень выполнения, и они дают команду ядру перезагрузиться (или остановиться).
В дополнение к тому, что написал иконоборец, есть важное различие между двумя программами: shutdownвключено /sbin, а rebootвключено /usr/bin.
Вы спрашиваете, почему это важно? Я скажу тебе.
Ниже /usrприведены те, которые не должны быть доступны, пока система не будет загружена достаточно далеко, чтобы система была минимально функциональной. Каталоги верхнего уровня , которые никогда традиционно не монтируются на отдельных файловых системах - /bin, /etc, /sbinи т.д. - как ожидается, будет доступны в то время как система достигает этого минимально полезное состояние. Есть различные значения этого дизайна; например, неправильно писать предложение «stop» сценария инициализации SysV, который использует программы, /usr/binесли есть альтернатива в /binили /sbin.
shutdownэто ключевая утилита, всегда доступная. rebootтолько для удобства
rebootнаходится в /sbinDebian (с SysVinit) и Ubuntu (с выскочкой).
Жиль "ТАК - перестань быть злым"
Итак, мета-ответ: знай свою систему. :) Чаще всего пользуюсь CentOS.
Уоррен Янг
То же самое для Arch (systemd), оба в / sbin
daisy
Действительно, в операционных системах Linux Systemd ни одна из них не является ключевой утилитой, так как в случае systemd все эти команды (как и в systemd doco) являются командами «совместимости». Действительно, предпосылка вопроса ложна. Они не в разных двоичных файлах. Для получения дополнительной информации см. Unix.stackexchange.com/a/196014/5132 .
Ответы:
Мы не обязательно нуждаемся в них обоих, но у нас есть оба из-за истории Unix и его множества версий.
Из соответствующих страниц руководства:
Завершение работы более универсально и мощнее, а перезагрузка более удобна и легко запоминаема.
shutdown позволяет вам указать временный аргумент (например, для перезапуска через 5 минут) и помимо перезагрузки может выполнять множество действий, в том числе:
Однако, если вы просто хотите перезагрузить систему сейчас, набрать ее легче,
reboot
чемshutdown -r now
.источник
shutdown
сейчас используются по умолчанию. Не пытайтесь получить помощь для выключенияshutdown -h
когда-либо, особенно не на сервере где-нибудь в центре обработки данных.Эти две команды делают что-то по-разному, однако в итоге они могут вызывать друг друга, поэтому они, похоже, делают одно и то же!
reboot
вызовет ядро, чтобы фактически запустить аппаратную перезагрузку. Тем не менее, он будет делать это только в том случае, если система готова к выключению - все демоны и пользовательские процессы должны быть остановлены, файловые системы размонтированы и т. Д. Таким образом, он проверяет уровень запуска системы, и если он не равен 0 или 6, то он фактически вызываетshutdown
команда для вас.shutdown
вызывает изменение уровня выполнения системы. Изменение уровня выполнения (0 для остановки или 6 для перезагрузки) запускает множество скриптов в /etc/rc0.d или rc6.d, которые закрывают демоны, демонтируют файловые системы и т. Д. Наконец, эти скрипты вызываютhalt
илиreboot
- на этот раз система находится в правильный уровень выполнения, и они дают команду ядру перезагрузиться (или остановиться).источник
В дополнение к тому, что написал иконоборец, есть важное различие между двумя программами:
shutdown
включено/sbin
, аreboot
включено/usr/bin
.Вы спрашиваете, почему это важно? Я скажу тебе.
Ниже
/usr
приведены те, которые не должны быть доступны, пока система не будет загружена достаточно далеко, чтобы система была минимально функциональной. Каталоги верхнего уровня , которые никогда традиционно не монтируются на отдельных файловых системах -/bin
,/etc
,/sbin
и т.д. - как ожидается, будет доступны в то время как система достигает этого минимально полезное состояние. Есть различные значения этого дизайна; например, неправильно писать предложение «stop» сценария инициализации SysV, который использует программы,/usr/bin
если есть альтернатива в/bin
или/sbin
.shutdown
это ключевая утилита, всегда доступная.reboot
только для удобстваисточник
reboot
находится в/sbin
Debian (с SysVinit) и Ubuntu (с выскочкой).