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.
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.
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.
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.
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.
Respuestas:
No hay diferencia en ellos. Internamente hacen exactamente lo mismo:
reboot
usa elshutdown
comando (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 laSIGKILL
señal (que todavía se encuentra en las fuentes, se puede invocar con la-f
opción), en las distribuciones más recientes, el valor predeterminado es el más elegante y fácil de usarinit 1 -> shutdown -r
. Esto asegura que los demonios se limpien antes de apagarse.init 6
le dice alinit
proceso 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 elshutdown -r now
comando para reiniciar la máquinaHoy 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 now
que se indica a continuaciónHay una pequeña explicación tomada de las páginas de manual de por qué
reboot -f
no es seguro:Editar:
Olvidé mencionar que en las próximas distribuciones de RHEL debe usar el nuevo
systemctl
comando para emitir apagado / reinicio. Como se indica en las páginas de manual dereboot
yshutdown
son "un comando heredado disponible solo para compatibilidad". y elsystemctl
método será el único seguro.fuente
init 1 -> shutdown -r
?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
now
el 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.
fuente
En unices tradicionales,
reboot
yshutdown -r now
son comandos muy diferentes. Bajo el uso típico,reboot
solo es seguro de usar en modo de usuario único.shutdown -r now
es el método canónico para apagar diferentes * nix's y es más seguro de usar en general y es funcionalmente equivalente ainit 6
.reinicio init (8) (8)
fuente
En FreeBSD hay una diferencia entre
reboot
yshutdown -r now
. Desde lareboot
página del manual:fuente