Точное поведение этих трех команд варьируется от операционной системы к операционной системе.
Турбьёрн Равн Андерсен
Ответы:
83
В них нет разницы. Внутренне они делают то же самое:
rebootиспользует shutdownкоманду (с ключом -r). Команда shutdown, используемая для уничтожения всех запущенных процессов, размонтирования всех файловых систем и, наконец, говорит ядру выдать команду ACPI power. Источник можно найти здесь . В старых дистрибутивах команда reboot вынуждала процессы выходить, выдавая SIGKILLсигнал (все еще найденный в источниках, может вызываться с -fпараметром), в самых последних дистрибутивах по умолчанию используется более изящный и дружественный к инициализации init 1 -> shutdown -r. Это гарантирует, что демоны очищаются перед выключением.
init 6говорит initпроцессу отключить все порожденные процессы / демоны, как записано в файлах инициализации (в обратном порядке, в котором они были запущены) и, наконец, вызвать shutdown -r nowкоманду для перезагрузки компьютера
Сегодня нет особой разницы, поскольку обе команды выполняют одно и то же, и они уважают сценарии инициализации, используемые для запуска служб / демонов, вызывая для них сценарии завершения работы. За исключением случаев, reboot -f -r nowуказанных ниже
Существует небольшое объяснение того, почему reboot -fэто небезопасно:
-f, --force
Принудительная немедленная остановка, отключение питания, перезагрузка. Не связывайтесь с системой инициализации.
Редактировать:
Забыл упомянуть, что в будущих дистрибутивах RHEL вы должны использовать новую systemctlкоманду для запуска poweroff / reboot. Как указано на страницах man rebootи shutdownони являются «устаревшей командой, доступной только для совместимости». и systemctlметод будет единственным безопасным.
Иногда моя перезагрузка зависает на SIGTERM, есть ли способ узнать почему, а также есть ли способ тайм-аута перезагрузки, такой, что, если это займет слишком много времени, это приведет к перезагрузке?
CMCDragonkai
2
Эти версии RHEL больше не являются "предстоящими". ☺ Как более подробно объяснено на unix.stackexchange.com/a/196014/5132 , в таких операционных системах systemd нет никакой разницы. Это даже не разные программы.
JdeBP
Ты опечатал, сказав init 1 -> shutdown -r?
deed02392
Ваша ссылка не работает.
знает
8
Отключение предпочтительнее, потому что оно позволяет вам указать причину радикальных действий - то, что вы всегда должны делать. Сообщение будет записано в журнал (ы) для потомков. Например:
shutdown -r now 'Kernel upgrade requires reboot'
Вы также можете выполнить запланированную перезагрузку, указав что-то отличное от nowвремени перезагрузки:
shutdown -r 22:00 'Work around kernel memory leak'
Тогда ваши пользователи будут получать периодические напоминания, чтобы выйти по мере приближения времени - процесс будет более упорядоченным и профессиональным.
На традиционных юниорах rebootи shutdown -r nowкомандах стоят совершенно разные. При обычном использовании rebootбезопасно использовать только в однопользовательском режиме.
shutdown -r nowявляется каноническим методом для выключения различных * nix'ов и более безопасен для использования в целом и функционально эквивалентен init 6.
На FreeBSD есть разница между rebootи shutdown -r now. Со rebootстраницы руководства :
Обычно утилита shutdown (8) используется, когда система должна быть остановлена или перезапущена, давая пользователям заблаговременное предупреждение о надвигающейся гибели и корректно завершая работу определенных программ.
Ответы:
В них нет разницы. Внутренне они делают то же самое:
reboot
используетshutdown
команду (с ключом -r). Команда shutdown, используемая для уничтожения всех запущенных процессов, размонтирования всех файловых систем и, наконец, говорит ядру выдать команду ACPI power. Источник можно найти здесь . В старых дистрибутивах команда reboot вынуждала процессы выходить, выдаваяSIGKILL
сигнал (все еще найденный в источниках, может вызываться с-f
параметром), в самых последних дистрибутивах по умолчанию используется более изящный и дружественный к инициализацииinit 1 -> shutdown -r
. Это гарантирует, что демоны очищаются перед выключением.init 6
говоритinit
процессу отключить все порожденные процессы / демоны, как записано в файлах инициализации (в обратном порядке, в котором они были запущены) и, наконец, вызватьshutdown -r now
команду для перезагрузки компьютераСегодня нет особой разницы, поскольку обе команды выполняют одно и то же, и они уважают сценарии инициализации, используемые для запуска служб / демонов, вызывая для них сценарии завершения работы. За исключением случаев,
reboot -f -r now
указанных нижеСуществует небольшое объяснение того, почему
reboot -f
это небезопасно:Редактировать:
Забыл упомянуть, что в будущих дистрибутивах RHEL вы должны использовать новую
systemctl
команду для запуска poweroff / reboot. Как указано на страницах manreboot
иshutdown
они являются «устаревшей командой, доступной только для совместимости». иsystemctl
метод будет единственным безопасным.источник
init 1 -> shutdown -r
?Отключение предпочтительнее, потому что оно позволяет вам указать причину радикальных действий - то, что вы всегда должны делать. Сообщение будет записано в журнал (ы) для потомков. Например:
shutdown -r now 'Kernel upgrade requires reboot'
Вы также можете выполнить запланированную перезагрузку, указав что-то отличное от
now
времени перезагрузки:shutdown -r 22:00 'Work around kernel memory leak'
Тогда ваши пользователи будут получать периодические напоминания, чтобы выйти по мере приближения времени - процесс будет более упорядоченным и профессиональным.
источник
На традиционных юниорах
reboot
иshutdown -r now
командах стоят совершенно разные. При обычном использованииreboot
безопасно использовать только в однопользовательском режиме.shutdown -r now
является каноническим методом для выключения различных * nix'ов и более безопасен для использования в целом и функционально эквивалентенinit 6
.init (8) перезагрузка (8)
источник
На FreeBSD есть разница между
reboot
иshutdown -r now
. Соreboot
страницы руководства :источник