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 apagar
  • HH: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, halt tambié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.

Para el examen LPIC-1: conocer shutdown -h now, shutdown -r, shutdown -c, y los equivalentes con systemctl poweroff y systemctl reboot.

Ajustes del kernel con sysctl

Índice de la sección

Índice del curso