Зачем нам нужна функция перезагрузки в разных двоичных файлах?

12

Зачем нам нужна функция перезагрузки в разных двоичных файлах?

shutdown -r

и

reboot

Или они чем-то отличаются?

LanceBaynes
источник
1
См. Различие в unix.stackexchange.com/questions/8690/… команды могут вести себя по-разному в зависимости от операционной системы (но в Linux обычно делают то же самое).
Пожалуйста, встаньте
Как отмечено ниже и подробно объяснено по адресу unix.stackexchange.com/a/196014/5132 , предпосылка этого вопроса неверна в системных операционных системах Linux. Это не разные двоичные файлы в таких системах.
JdeBP

Ответы:

15

Мы не обязательно нуждаемся в них обоих, но у нас есть оба из-за истории Unix и его множества версий.

Из соответствующих страниц руководства:

  • Утилита отключения появилась в 4.0BSD.
  • Утилита перезагрузки появилась в Версии 6 AT & T UNIX.

Завершение работы более универсально и мощнее, а перезагрузка более удобна и легко запоминаема.

shutdown позволяет вам указать временный аргумент (например, для перезапуска через 5 минут) и помимо перезагрузки может выполнять множество действий, в том числе:

  • вы можете просто пнуть пользователей, а не выключить
  • Вы можете перевести систему в спящий режим вместо выключения
  • Вы можете просто завершить работу без перезагрузки (например, команда остановки)
  • Вы можете включить пользовательское предупреждение для пользователей в системе

Однако, если вы просто хотите перезагрузить систему сейчас, набрать ее легче, rebootчем shutdown -r now.

иконоборец
источник
1
Интересный факт: некоторые версии shutdownсейчас используются по умолчанию. Не пытайтесь получить помощь для выключения shutdown -hкогда-либо, особенно не на сервере где-нибудь в центре обработки данных.
Residuum
6

Эти две команды делают что-то по-разному, однако в итоге они могут вызывать друг друга, поэтому они, похоже, делают одно и то же!

rebootвызовет ядро, чтобы фактически запустить аппаратную перезагрузку. Тем не менее, он будет делать это только в том случае, если система готова к выключению - все демоны и пользовательские процессы должны быть остановлены, файловые системы размонтированы и т. Д. Таким образом, он проверяет уровень запуска системы, и если он не равен 0 или 6, то он фактически вызывает shutdownкоманда для вас.

shutdownвызывает изменение уровня выполнения системы. Изменение уровня выполнения (0 для остановки или 6 для перезагрузки) запускает множество скриптов в /etc/rc0.d или rc6.d, которые закрывают демоны, демонтируют файловые системы и т. Д. Наконец, эти скрипты вызывают haltили reboot- на этот раз система находится в правильный уровень выполнения, и они дают команду ядру перезагрузиться (или остановиться).

Ричард Даунер
источник
6

В дополнение к тому, что написал иконоборец, есть важное различие между двумя программами: shutdownвключено /sbin, а rebootвключено /usr/bin.

Вы спрашиваете, почему это важно? Я скажу тебе.

Ниже /usrприведены те, которые не должны быть доступны, пока система не будет загружена достаточно далеко, чтобы система была минимально функциональной. Каталоги верхнего уровня , которые никогда традиционно не монтируются на отдельных файловых системах - /bin, /etc, /sbinи т.д. - как ожидается, будет доступны в то время как система достигает этого минимально полезное состояние. Есть различные значения этого дизайна; например, неправильно писать предложение «stop» сценария инициализации SysV, который использует программы, /usr/binесли есть альтернатива в /binили /sbin.

shutdownэто ключевая утилита, всегда доступная. rebootтолько для удобства

Уоррен Янг
источник
1
rebootнаходится в /sbinDebian (с SysVinit) и Ubuntu (с выскочкой).
Жиль "ТАК - перестань быть злым"
Итак, мета-ответ: знай свою систему. :) Чаще всего пользуюсь CentOS.
Уоррен Янг
То же самое для Arch (systemd), оба в / sbin
daisy
Действительно, в операционных системах Linux Systemd ни одна из них не является ключевой утилитой, так как в случае systemd все эти команды (как и в systemd doco) являются командами «совместимости». Действительно, предпосылка вопроса ложна. Они не в разных двоичных файлах. Для получения дополнительной информации см. Unix.stackexchange.com/a/196014/5132 .
JdeBP