Перезагружается ли то же, что и init 6?

19

Перезагружается ли то же, что и init 6 для ubuntu?

Я запускаю Ubuntu 12.04 на Amazon EC2. Когда ssh'ed в поле, я могу набрать runlevel , и я получаю:

N 2

Глядя на man reboot , я вижу, что:

  

При вызове с --force или когда на уровне выполнения 0 или 6 этот инструмент вызывает сам системный вызов reboot (2) и непосредственно перезагружает систему. В противном случае это просто вызывает инструмент shutdown (8) с соответствующими аргументами.

Если я прочитаю man shutdown 8 , я вижу:

  

shutdown позволяет безопасно сбрасывать систему. Все зарегистрированные пользователи уведомляются о том, что система идет вниз, и в течение последних пяти минут TIME предотвращаются новые логины.

Мое основное понимание разницы между reboot и init 6 :

  • На других дистрибутивах и, возможно, более старых дистрибутивах reboot просто отключит диски и в основном щелкнет переключателем питания без запуска каких-либо сценариев завершения работы.
  • init 6 будет запускать все сценарии завершения работы в /etc/init/rc.* , поскольку это уменьшает уровень выполнения системы
  • В новых версиях Ubuntu команда reboot без --force или -f будет запускать команду shutdown, которая в основном будет делать то же самое, что и init 6
  • Вероятно, лучше привыкнуть использовать init 6 вместо reboot , так как это безопаснее и будет работать лучше кросс-distro, но поведение по умолчанию reboot было изменено, чтобы попытаться предотвратить ошибки / dataloss, если кто-то его использует.

Это верно? Если нет, что мне не хватает?

    
задан cwd 13.08.2012 в 20:59
источник

1 ответ

20

На самом деле никогда нет веских причин использовать init 6 вместо reboot , если только:

  • По какой-то причине вам не хватает исполняемого файла reboot , или
  • Вы намеренно пытаетесь избежать уведомления пользователей о том, что система идет вниз.

reboot (пока вы не запускаете reboot --force ) на самом деле является «более мягким» способом закрытия.

Рассмотрим:

  

init 6 будет запускать все сценарии завершения работы в /etc/init/rc.* , поскольку это уменьшает уровень выполнения системы

Но команда reboot , называемая без флаг --force , только непосредственно перезагружает систему (через reboot системный вызов ), когда применяется одна из этих двух ситуаций:

  • Система находится в уровне выполнения 0 (однопользовательский режим), поэтому нет снижения уровня запуска, который может , поэтому сценарии выключения не запускаются автоматически.
  • Система находится на уровне выполнения 6. Что init 6 делает это для того, чтобы система была на уровне выполнения 6. Опять же, ничего не работает init 6 сделает это, выполнив команду reboot won ' t do.

В противном случае sudo reboot эквивалентно sudo shutdown -r now . Это делает все приятные вещи sudo init 6 , но также:

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

Если вы находитесь в системе, в которой только вы вошли в систему, и только локальные логины, нет ничего плохого в использовании init 6 для перезагрузки. Если вы предпочитаете перезагружаться, то все средства, вперед - вы ничего не навредите, сделав это. Но нет ничего объективно предпочтительного в том, чтобы делать это таким образом.

init собственной документации говорит, что это не обычный способ отключить или перезагрузить систему. . Учтите, что когда init запускается пользователем (например, при запуске sudo init 6 ), он фактически запускает telinit (см. man init ). telinit - это то, что на самом деле изменяет уровни выполнения. И man telinit сообщает нам:

  

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

    
ответ дан Eliah Kagan 13.08.2012 в 21:20
источник