В чем разница между перезагрузкой, init 6 и shutdown -r сейчас?

100

Я просто хочу знать разницу между

  • reboot
  • init 6
  • shutdown -r now

и какой самый безопасный и лучший?

Рахул Патил
источник
1
Точное поведение этих трех команд варьируется от операционной системы к операционной системе.
Турбьёрн Равн Андерсен

Ответы:

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'

Тогда ваши пользователи будут получать периодические напоминания, чтобы выйти по мере приближения времени - процесс будет более упорядоченным и профессиональным.

Михаил Т.
источник
5

На традиционных юниорах rebootи shutdown -r nowкомандах стоят совершенно разные. При обычном использовании rebootбезопасно использовать только в однопользовательском режиме.

shutdown -r nowявляется каноническим методом для выключения различных * nix'ов и более безопасен для использования в целом и функционально эквивалентен init 6.

init (8) перезагрузка (8)

user2619306
источник
4

На FreeBSD есть разница между rebootи shutdown -r now. Со rebootстраницы руководства :

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

Мариан Черны
источник
1
Это не вопрос BSD, о чем свидетельствует тег на вопросе и использование уровня выполнения System 5 в одной из команд. ☺
JdeBP
1
Я знаю, что это вопрос Linux. Я подумал, что кому-то может быть полезно узнать, что в некоторых других системах есть разница.
Мариан Черны