¿Cuál es la diferencia entre los comandos Halt y Shutdown?

Respuestas:

77

Generalmente, uno usa el shutdowncomando . Permite una demora de tiempo y un mensaje de advertencia antes de apagar o reiniciar, lo cual es importante para la administración del sistema de servidores shell multiusuario; Puede proporcionar a los usuarios un aviso anticipado del tiempo de inactividad.

Como tal, el comando de apagado debe usarse de esta manera para detener / apagar la computadora de inmediato (al menos en Linux y FreeBSD):

shutdown -h now

O para reiniciarlo con una advertencia personalizada de 30 minutos de antelación:

shutdown -r +30 "Planned software upgrades"

Después del retraso, shutdownle dice initque cambie a nivel de ejecución 0 (detención) o 6 (reinicio). (Tenga en cuenta que omitir -ho -rprovocará que el sistema entre en modo de usuario único (nivel de ejecución 1), que mata la mayoría de los procesos del sistema pero en realidad no detiene el sistema; aún permite que el administrador permanezca conectado como root.

Una vez que se han eliminado los procesos del sistema y se han desmontado los sistemas de archivos, el sistema se detiene / apaga o se reinicia automáticamente. Esto se realiza mediante el comando haltoreboot , que sincroniza los cambios en los discos y luego realiza la detención / apagado real o el reinicio.

En Linux, si se ejecuta halto rebootcuando el sistema aún no ha iniciado el proceso de apagado, invocará el shutdowncomando automáticamente en lugar de realizar directamente la acción deseada. Sin embargo, en sistemas como FreeBSD , estos comandos primero inician sesión en la acción wtmpy luego realizan la detención / reinicio inmediatamente , sin eliminar primero los procesos o desmontar los sistemas de archivos.

Por favor levantese
fuente
¡Buena explicación!
18
... pero ahora fuera de fecha. En los sistemas operativos Linux de systemd, estos comandos existen (en palabras de systemd doco) "solo por compatibilidad". No están separados halt, rebooty shutdownlos programas que invocan entre sí. Hay un solo programa, con muchos analizadores de línea de comandos que se canalizan internamente en una ruta de código. Tampoco hay niveles de ejecución. El apagado tampoco entra en un modo de usuario único. De hecho, se cambió el nombre del modo de usuario único. Para obtener detalles, consulte unix.stackexchange.com/a/196014/5132 .
JdeBP
49

El pasado

En la década de 1980, los BSD tenían halt, rebooty shutdown. System 5 UNIX tenía un conjunto de herramientas de compatibilidad BSD. Pero, de forma nativa, tenía su propia orden diferente shutdown; y no tenía halto rebooten absoluto. (Algunas variantes del Sistema 5 tenían cosas como las de SCO XENIX haltsys).

El BSD halty los rebootcomandos fueron de bajo nivel, drásticos e inmediatos. La manera considerada de cerrar un sistema BSD fue el shutdowncomando, que hizo todas las cosas que uno espera que sucedan: wallmensajes a los usuarios, servicios cortados con gracia, entradas de registro escritas, inicios de sesión deshabilitados, etc.

Mientras que los BSD fueron en gran parte donde la sabiduría recibida originó esos " shutdownejecutivos halt/ reboot", y que estos últimos debían usarse con cuidado; era el mundo del sistema 5, donde la gente aprendió que el hábito contrario halt/ rebooteran taquigrafías simplemente a mano y nada más: /usr/ucb/haltdesde el "paquete de compatibilidad BSD", no fue diferente en efecto shutdown -h. Ambos terminaron haciendo init 0.

Otras lecturas

Hoy

Hoy en día, tenemos una gama de posibles conjuntos de herramientas de administración del sistema. Los BSD todavía tienen su conjunto de herramientas, aunque purgado de cualquier posible AT & Tisms en la década de 1990. Miquel van Smoorenburg en 1992 (re) escribió un Linux init+ rc, y sus herramientas asociadas, que las personas ahora denominan "System 5 init", aunque en realidad no es el software del Sistema 5 de UNIX (y no es solo init) También hay SystemD , advenedizo , y comilona , cada uno de los cuales tiene sus propias implementaciones de halt, reboot, fasthalt, fastboot, y así sucesivamente.

Los conjuntos de herramientas también han crecido y cambiado. Ahora hay un poweroffcomando, no presente en los sistemas operativos de la década de 1980 porque las Unidades Centrales de Procesamiento en la mayoría de las máquinas contemporáneas no tenían forma de controlar sus fuentes de alimentación. Los conjuntos de herramientas de Linux en particular han adquirido los comandos BSD; pero, al igual que las herramientas de compatibilidad BSD en el Sistema 5 de UNIX, no son exactamente iguales y las cosas se han aplanado en gran medida.

Este aplanamiento nos ha llevado al punto donde halty shutdownson en su mayoría de la misma. Pero los detalles exactos varían de un conjunto de herramientas a otro, y la mecánica de cada conjunto de herramientas es ligeramente diferente.

También nos ha llevado a la posición ligeramente embarazosa, donde este conjunto de comandos se ha vuelto tan adornada con opciones de compatibilidad que ahora permite a las personas para dar computadoras instrucciones contradictorias como reboot --halty poweroff --reboot, como he señalado en la página del manual para la comilona halt, fasthalt, reboot, fastboot, y poweroffcomandos. ☺

El conjunto de herramientas systemd

halt, reboot, poweroff, telinit, Y shutdownson todo un programa . En realidad es el propio systemctlprograma de systemd . Tiene varios analizadores de línea de comandos para las diversas sintaxis de línea de comandos de esos comandos, así como los suyos propios, pero después de eso se canaliza en gran medida internamente en una ruta de código. No hay diferencia entre usar halty sus opciones de comando para activar una acción y usar shutdowny sus opciones de comando para activar la misma acción.

systemd no considera el modo de rescate (que es lo que la gente de systemd ha renombrado como modo de usuario único ) como un estado de apagado del sistema, y ​​no es accesible con ninguno de estos comandos. Sin opción shutdown nowes lo mismo que poweroff.

Otras lecturas:

Los BSD

Los BSD conservan en gran medida su semántica de los años ochenta. halty por shutdownlo tanto no son equivalentes en sus conjuntos de herramientas. halty rebootson un solo programa; y todavía son de bajo nivel, inmediatos y drásticos. Mientras que , shutdowny powerofftambién un solo programa, haga todas las cosas consideradas como apagado programado, escribir wallmensajes, acciones de registro, deshabilitar el inicio de sesión, etc.

En los conjuntos de herramientas BSD, shutdown/ powerofftradicionalmente terminaba invocando halt/ rebootpara promulgar el cambio final de estado del sistema. El (a menudo hoy en día incorrecto) recibió la sabiduría de que " shutdownexecs halt/ reboot" de hecho todavía tiene NetBSD y OpenBSD. Pero en FreeBSD / TrueOS / DragonFlyBSD solo es el caso si -ose utiliza la opción. En estos BSD, tanto de estos programas normalmente promulgar el cambio final del estado del sistema mediante el envío de varias señales ( INT, USR1y USR2) para procesar # 1. inithace toda la gestión del estado del sistema en estos sistemas.

En todos ellos, la opción-menos shutdown nowno es equivalente a cualquiera de halt, rebooto poweroff. Transita al modo de usuario único BSD , desde el cual se puede volver a pasar al modo multiusuario .

Otras lecturas:

  • shutdown. Manual del administrador del sistema . Páginas del manual de NetBSD. 2011-11-04.
  • reboot,halt . Páginas del manual de OpenBSD. 2016-09-03.
  • shutdown. Páginas del manual de FreeBSD. 2016-09-21.
  • reboot, halt, fastboot,fasthalt . Páginas del manual de FreeBSD. 2017-03-19.
  • shutdown. Manual del administrador del sistema . Páginas del manual de DragonFlyBSD. 2016-09-29.
  • reboot, halt, fastboot,fasthalt . Manual del administrador del sistema . Páginas del manual de DragonFlyBSD. 2016-09-29.

El conjunto de herramientas nosh

En el conjunto de herramientas de gestión del sistema nosh, halt, fasthalt, poweroff, fastpoweroff, reboot, y fastbootson todos un solo programa. Es una cuña de compatibilidad con versiones anteriores que normalmente simplemente encadena shutdown, lo contrario de la sabiduría recibida. La --forceopción hace que se encadene en su system-controllugar.

Por lo tanto, no hay diferencia (ausente --force) entre el haltcomando y el shutdowncomando (con la opción equivalente) en este conjunto de herramientas, ya que este conjunto de comandos de "compatibilidad BSD / System 5" es simplemente una capa delgada de calce en la parte superior shutdown.

Otras lecturas:

El conjunto de herramientas advenedizo

Al igual que con nosh, en el conjunto de herramientas de administración del sistema inicial se aplica lo contrario de la sabiduría BSD recibida. halt,, rebooty poweroffson todos un programa, que normalmente encadena a shutdown; a menos que se use la --forceopción, lo que hace que el reboot()sistema se llame a sí mismo.

Entonces, nuevamente, no hay diferencia (ausente --force) entre el haltcomando y el shutdowncomando (con la opción equivalente) en este conjunto de herramientas. También de nuevo, la opción-menos shutdown now(ninguno de los cuales halt, rebooto poweroffpuede llegar a invocar, ya que todas las opciones de configuración) trae el sistema en modo de usuario único en lugar de apagarlo.

Otras lecturas:

El conjunto de herramientas Linux System 5 init+rc

Una vez más, en este conjunto de herramientas se aplica lo opuesto a la sabiduría BSD recibida halty rebootsimplemente se encadena a shutdown, a menos que el sistema ya esté apagado o detenga los "niveles de ejecución", en cuyo caso estos comandos realmente promulgan el cambio final de estado del sistema. shutdowna su vez encadena a init.

Entonces, de nuevo, no hay diferencia (a menos que el sistema ya esté apagado en gran medida) entre halty shutdownporque el primero solo invoca al segundo. Y sí, otra vez, opción menos shutdown now(que ninguno de halt, rebooto poweroffpuede llegar a invocar, ya que todas las opciones de configuración) trae el sistema en modo de usuario único en lugar de apagarlo.

JdeBP
fuente
Es por esto que el sistema de votación no funciona cuando el 80% de los votantes
ychaouche
Usted dice eso: "detener y reiniciar son un solo programa; y todavía son de bajo nivel, inmediatos y drásticos", lo cual no parece ser el caso. Cito la página del manual de detención de dragonflyBSD que dice: Las utilidades de detención y reinicio vacían el caché del sistema de archivos al disco, envían todos los procesos en ejecución un SIGTERM (y posteriormente un SIGKILL) y, respectivamente, detienen o reinician el sistema. La acción se registra, incluida la entrada de un registro de apagado en el archivo wtmp (5). Ver: dragonflybsd.org/cgi/web-man?command=halt§ion=ANY
ychaouche
Ahora ve y lee la respuesta nuevamente, para un conjunto de cosas que ya están explícitamente (dos veces más) que no están en esa lista; uno que también se detalla en los diversos manuales del administrador del sistema de BSD.
JdeBP
¿Qué lista @JdeBP?
ychaouche
11

Sospecho que esto depende en cierta medida de la versión de UNIX / Linux que esté utilizando. En Centos (y espero que otros Linux modernos) detenga el apagado de las llamadas (siempre que no esté en el nivel de ejecución 0 o 6) para que su sistema se apague limpiamente. En Solaris 10, la detención es más brutal, simplemente vacía los cachés de disco y apaga el sistema; no se hace ningún intento de ejecutar scripts o apagar las instalaciones de smf .


fuente
2

Para aquellos que usan AWS EC2: en AWS se shutdown detiene una instancia, cuando la halt termina .

dveim
fuente
¿Cuál es la diferencia entre detener y terminar ?
roaima
Ese es un tema completamente diferente, estar fuera de lugar aquí, por eso no lo mencioné. Pero puede echar un vistazo en docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
dveim
1
Así, en su respuesta, usted está diciendo que la parada hace lo que dice, y se detiene la instancia, mientras que cese (o en su terminología alternativa, terminar ) se detiene la instancia y lo elimina.
roaima
Si. Pero eso es específico de AWS.
dveim
Ah Veo. El OP no ha proporcionado contexto. Tienes. Gracias.
roaima
0

En Linux, "detener" y "reiniciar" son alias del comando de apagado, shutdown -hy shutdown -rrespectivamente. El cierre de Bareword generalmente supone -h.

Shadur
fuente
10
No están aliasesen el sentido de alias de shell, pero sí, haltbásicamente solo llama shutdown -hy rebootejecuta shutdown -r. Tenga en cuenta que si pasa la -fopción (fuerza) de halto reboot, shutdownse no llama.
Mikel
En realidad, aunque todavía está mal, en los sistemas operativos systemd, la descripción de Shadur aquí está más cerca de la verdad que la corrección de Mikel. No hay "A solo llama a B". Todas son formas alternativas de invocar un solo programa , como se explica con más detalle en unix.stackexchange.com/a/196014/5132 .
JdeBP
@JdeBP Cuando escribí este systemd estuvo fuera por menos de un año y nunca había oído hablar de él. :)
Shadur
1
@JdeBP Los equipararía con, digamos, el sendmailcomando en este punto: al igual que con los MTA, en realidad no importa qué sistema de inicio use, porque todos reconocerán ambos shutdowny haltcomo tales.
Shadur
1
En realidad, sí importa; porque hay diferencias sutiles, y de hecho no sutiles, entre los conjuntos de herramientas. Irónicamente, ese es también el caso con el sendmailcomando. Es como el sendmailcomando, pero no en la forma en que piensas.
JdeBP