¿Cuál es la diferencia entre reiniciar, init 6 y apagar -r ahora?

100

Solo quiero saber la diferencia entre

  • reboot
  • init 6
  • shutdown -r now

¿Y cuál es el más seguro y el mejor?

Rahul Patil
fuente
1
El comportamiento exacto de estos tres comandos varía de un sistema operativo a otro.
Thorbjørn Ravn Andersen

Respuestas:

83

No hay diferencia en ellos. Internamente hacen exactamente lo mismo:

  • rebootusa el shutdowncomando (con el modificador -r). El comando de apagado solía matar todos los procesos en ejecución, desmontar todos los sistemas de archivos y finalmente le dice al núcleo que emita el comando de encendido ACPI. La fuente se puede encontrar aquí . En las distribuciones más antiguas, el comando de reinicio obligaba a los procesos a salir emitiendo la SIGKILLseñal (que todavía se encuentra en las fuentes, se puede invocar con la -fopción), en las distribuciones más recientes, el valor predeterminado es el más elegante y fácil de usar init 1 -> shutdown -r. Esto asegura que los demonios se limpien antes de apagarse.

  • init 6le dice al initproceso que apague todos los procesos / demonios generados como están escritos en los archivos init (en el orden inverso en que comenzaron) y finalmente invoque el shutdown -r nowcomando para reiniciar la máquina

Hoy no hay mucha diferencia ya que ambos comandos hacen exactamente lo mismo, y respetan los scripts de inicio utilizados para iniciar servicios / demonios invocando los scripts de apagado para ellos. Excepto por lo reboot -f -r nowque se indica a continuación

Hay una pequeña explicación tomada de las páginas de manual de por qué reboot -fno es seguro:

  -f, --force
    Forzar detención inmediata, apagado, reinicio. No contacte al sistema init.

Editar:

Olvidé mencionar que en las próximas distribuciones de RHEL debe usar el nuevo systemctlcomando para emitir apagado / reinicio. Como se indica en las páginas de manual de rebooty shutdownson "un comando heredado disponible solo para compatibilidad". y el systemctlmétodo será el único seguro.

Martino Dino
fuente
A veces mi reinicio se bloquea en la SIGTERM, ¿hay alguna manera de saber por qué, y también hay una manera de agotar el tiempo de reinicio, de modo que si tarda demasiado, forzará un reinicio?
CMCDragonkai
2
Esas versiones de RHEL ya no son "próximas". ☺ Como se explica con más detalle en unix.stackexchange.com/a/196014/5132 , en dichos sistemas operativos systemd no hay ninguna diferencia. Ni siquiera son programas diferentes.
JdeBP
¿Te equivocaste diciendo init 1 -> shutdown -r?
escritura 02392
Tu enlace está roto.
Quién sabe
8

El apagado es preferible porque le permite especificar el motivo de la acción drástica, algo que siempre debe hacer. El mensaje se grabará en el registro (s) para la posteridad. Por ejemplo:

shutdown -r now 'Kernel upgrade requires reboot'

También puede realizar un reinicio programado , especificando algo que no sea nowel tiempo de reinicio:

shutdown -r 22:00 'Work around kernel memory leak'

Luego, sus usuarios recibirán recordatorios periódicos a medida que se acerque el tiempo: el proceso será más ordenado y profesional.

Mikhail T.
fuente
5

En unices tradicionales, rebooty shutdown -r nowson comandos muy diferentes. Bajo el uso típico, rebootsolo es seguro de usar en modo de usuario único.

shutdown -r nowes el método canónico para apagar diferentes * nix's y es más seguro de usar en general y es funcionalmente equivalente a init 6.

reinicio init (8) (8)

usuario2619306
fuente
4

En FreeBSD hay una diferencia entre rebooty shutdown -r now. Desde la rebootpágina del manual:

Normalmente, la utilidad shutdown (8) se usa cuando el sistema necesita ser detenido o reiniciado, dando a los usuarios una advertencia anticipada de su fatalidad inminente y terminando limpiamente programas específicos.

Marián Černý
fuente
1
Sin embargo, esta no es una pregunta BSD, como lo demuestra la etiqueta en la pregunta y el uso de un nivel de ejecución del Sistema 5 en uno de los comandos. ☺
JdeBP
1
Sé que es una pregunta de Linux. Pensé que a alguien podría resultarle útil saber que en otros sistemas la diferencia es diferente.
Marián Černý