Comandos de apagado y reinicio: shutdown, reboot, halt, poweroff
Introducción
Apagar o reiniciar un servidor Linux correctamente es crucial para garantizar que los datos en memoria se escriben a disco, los servicios se detienen de forma ordenada y los sistemas de ficheros se desmontan limpiamente. Un corte de corriente brusco puede provocar corrupción de datos y fsck en el siguiente arranque.
shutdown — Apagado programado y con aviso
Es el comando más completo para apagar o reiniciar. Avisa a los usuarios conectados, espera el tiempo indicado y cierra el sistema ordenadamente.
Sintaxis:
shutdown [OPCIONES] [TIEMPO] [MENSAJE]
Ejemplos de uso:
# shutdown -h now ← apagar inmediatamente
# shutdown -h +10 ← apagar en 10 minutos
# shutdown -h +10 "Mantenimiento programado. Guarda tu trabajo."
# shutdown -h 23:00 ← apagar a las 23:00
# shutdown -r now ← reiniciar inmediatamente
# shutdown -r +5 ← reiniciar en 5 minutos
# shutdown -c ← cancelar un shutdown programado
Opciones principales:
-h→ halt: detiene el sistema (equivale a poweroff en la mayoría de casos)-r→ reboot: reinicia el sistema-c→ cancela un shutdown pendiente-k→ envía el mensaje de aviso pero no apaga realmente (útil para pruebas)now→ ejecutar inmediatamente (equivale a+0)+N→ esperar N minutos antes de apagarHH:MM→ apagar a una hora concreta
Comportamiento con usuarios conectados:
Cuando se programa un apagado con tiempo, systemd crea el fichero /run/nologin
5 minutos antes de la hora indicada. Este fichero impide que nuevos usuarios inicien sesión (el sistema muestra
el contenido del fichero como mensaje de error al intentar entrar).
reboot, halt y poweroff
En sistemas con systemd estos tres comandos son equivalentes a invocar systemctl
con el target correspondiente. Todos sincronizan los datos a disco y detienen los servicios antes de actuar.
Comando Equivalente systemctl Acción
─────────────── ─────────────────────────── ────────────────────────────────
reboot systemctl reboot Reinicia el sistema
poweroff systemctl poweroff Apaga y corta la alimentación
halt systemctl halt Detiene el sistema (sin cortar corriente en algunos casos)
Uso:
# reboot
# poweroff
# halt
# Con systemctl:
# systemctl reboot
# systemctl poweroff
# systemctl halt
# systemctl suspend ← suspender (RAM)
# systemctl hibernate ← hibernar (disco)
Diferencia entre halt y poweroff:
- halt: detiene todos los procesos y deja el sistema en un estado en que la CPU está parada, pero no necesariamente corta la alimentación (depende del hardware y la configuración).
- poweroff: detiene los procesos y envía la señal ACPI para cortar físicamente la alimentación.
-
En la práctica, con systemd,
halttambién apaga el sistema en la mayoría de configuraciones.
systemctl y los targets de apagado
Internamente, shutdown, reboot y poweroff invocan a systemd activando los
targets correspondientes:
poweroff.target ← apagado completo
reboot.target ← reinicio
halt.target ← detención sin corte de corriente
Cuando systemd activa poweroff.target, ejecuta en orden inverso el grafo de dependencias: detiene
servicios, desmonta sistemas de ficheros, sincroniza discos y finalmente apaga el hardware.
wall — Mensaje a todos los usuarios
shutdown usa internamente wall para enviar avisos a todos los terminales con usuarios
conectados. También se puede usar directamente:
# wall "El sistema se reiniciará en 5 minutos para aplicar actualizaciones."
El mensaje aparece en todos los terminales activos (incluidas sesiones SSH).
Buenas prácticas
-
En servidores con usuarios activos, usar siempre
shutdown -r +5 "mensaje"para dar tiempo a guardar el trabajo. -
Verificar qué procesos están en ejecución antes de apagar:
who,w,ps aux. -
En sistemas con bases de datos, asegurarse de que el servicio se detiene limpiamente antes del apagado:
systemctl stop mariadb. - Para servidores remotos: si el reinicio falla o el servidor no vuelve, necesitarás acceso de consola (IPMI, iDRAC, ILO). Asegúrate de tenerlo antes de reiniciar.