¿Reiniciar es lo mismo que init 6?

19

¿Reiniciar es lo mismo que init 6 para ubuntu?

Estoy ejecutando Ubuntu 12.04 en Amazon EC2. Cuando ssh'ed en la caja puedo escribir runlevel y obtengo:

N 2

Al mirar man reboot , veo que:

  

Cuando se llama con --force o cuando está en el nivel de ejecución 0 o 6, esta herramienta invoca la llamada al sistema de reinicio (2) y reinicia directamente el sistema. De lo contrario, esto simplemente invoca la herramienta shutdown (8) con los argumentos apropiados.

Si leo man shutdown 8 , veo:

  

shutdown arregla para que el sistema sea derribado de manera segura. Se notifica a todos los usuarios que el sistema está bajando y, en los últimos cinco minutos de TIME, se previenen nuevos inicios de sesión.

Mi comprensión básica sobre la diferencia entre reboot y init 6 es:

  • En otras distribuciones y quizás en versiones más antiguas, reboot simplemente desmontaría los discos y básicamente movería el interruptor de encendido sin ejecutar ninguna secuencia de comandos de apagado
  • init 6 ejecutará todos los scripts de cierre en /etc/init/rc.* ya que reduce el nivel de ejecución del sistema
  • En versiones más nuevas de Ubuntu, el comando reboot sin --force o -f ejecutará el comando shutdown, que básicamente haría lo mismo que init 6
  • Probablemente sea mejor adquirir el hábito de usar init 6 en lugar de reboot , ya que es más seguro y funcionaría mejor en la distribución cruzada, pero el comportamiento predeterminado de reboot se ha modificado para intentar evitar errores / dataloss si alguien lo usa.

¿Es eso correcto? Si no, ¿qué me estoy perdiendo?

    
pregunta cwd 13.08.2012 - 20:59

1 respuesta

20

En realidad, nunca hay ninguna razón convincente para usar init 6 en lugar de reboot , a menos que:

  • Por alguna razón, falta el% ejecutable reboot , o
  • Está deliberadamente tratando de evitar notificar a los usuarios que el sistema está bajando.

reboot (siempre que no ejecutes reboot --force ) es en realidad la forma "más suave" de cerrar.

Considere:

  

init 6 ejecutará todos los scripts de cierre en /etc/init/rc.* ya que reduce el nivel de ejecución del sistema

Pero el comando reboot , llamado sin el indicador --force , solo reinicia directamente el sistema (a través de el reboot llamada al sistema ) cuando se aplica una de estas dos situaciones:

  • El sistema está en nivel de ejecución 0 (modo de usuario único), por lo que no hay reducción del nivel de ejecución que puede ocurrir, por lo que no se ejecutan automáticamente secuencias de comandos de cierre.
  • El sistema está en el nivel de ejecución 6. Lo que init 6 lo hace para poner el sistema en el nivel de ejecución 6. Nuevamente, no hay nada ejecutando init 6 lo hará ejecutando el comando reboot ganado ' t do.

De lo contrario, sudo reboot es equivalente a sudo shutdown -r now . Esto hace todas las cosas buenas sudo init 6 hace, pero también:

  • notifica a los usuarios que el sistema está bajando.
  • impide nuevos inicios de sesión (aunque probablemente no lo logren).
  • es más intuitivo y autodocumentado que sudo init 6 .

Si estás en un sistema con solo tu sesión iniciada, y solo inicios de sesión locales, no hay nada de malo en usar init 6 para reiniciar. Si así es como prefieres reiniciar, entonces por todos los medios, adelante, no estás perjudicando nada al hacerlo. Pero tampoco hay nada objetivamente preferible sobre hacerlo de esta manera.

La

init de la propia documentación dice que no es la forma normal de apagar o reiniciar el sistema. Considere que cuando init es ejecutado por el usuario (como cuando ejecuta sudo init 6 ), en realidad ejecuta telinit (ver man init ). telinit es lo que realmente cambia los niveles de ejecución. Y man telinit nos dice:

  

Normalmente, debe utilizar la herramienta shutdown (8) para detener o reiniciar   el sistema, o para bajarlo al modo de usuario único.

    
respondido por el Eliah Kagan 13.08.2012 - 21:20

Lea otras preguntas en las etiquetas