Por qué no conviene “apagar a las bravas” (y qué hace realmente shutdown
)
He visto demasiadas veces el “ya está, mantengo pulsado el botón y listo”. Parece inocente… hasta que no lo es. Detrás de un shutdown
hay una coreografía: primero se avisa a los usuarios, se envía SIGTERM a los procesos para que cierren con orden, se detienen servicios, se sincroniza el disco (flush de cachés) y, si todo está limpio, se desmontan sistemas de archivos. Forzar el apagado corta esa secuencia: puedes corromper datos, dejar transacciones a medias o provocar una reparación del sistema de archivos en el próximo arranque.
En mi día a día, trato el apagado como una muestra de respeto por el sistema y por mis datos. Si trabajas con contenedores, bases de datos o un servidor web, hacerlo bien no es opcional: es la diferencia entre volver a arrancar sin dramas o pasarte la mañana reparando tablas y rascando logs para entender qué se rompió.
Idea clave: Un apagado correcto minimiza el riesgo de corrupción silenciosa. Incluso en un portátil, dar unos minutos con shutdown -h +5
y un mensaje claro permite que todo cierre como debe.
Te dejo tambien nuestra guía de comandos Linux
Sintaxis esencial de shutdown
(y equivalentes con systemd
)
La forma general es:
shutdown [OPCIONES] [TIEMPO] [MENSAJE]
Opciones que usarás a diario
-h
→ Apagar (halt/poweroff).-r
→ Reiniciar.-P
→ Apagar y cortar alimentación (poweroff).-c
→ Cancelar un apagado programado.-k
→ Enviar aviso a los usuarios, sin apagar (útil para pruebas).
Tiempo
now
→ inmediato.+m
→ en “m” minutos (ej.+10
).hh:mm
→ a una hora específica (24 h).
Equivalentes con systemd
systemctl poweroff
(apagar)systemctl reboot
(reiniciar)systemctl halt
(detener sin cortar alimentación)
En servidores modernos con systemd
, uso mucho systemctl poweroff
/reboot
por su integración con unidades y dependencias; shutdown
sigue siendo perfecto cuando quiero programar y notificar en un solo comando.
Programar apagados y reinicios: now
, +m
, hh:mm
, mensajes a usuarios
Programar te da margen para avisar, cerrar sesiones y terminar trabajos en curso.
Recetas rápidas
- Apagado inmediato y educado:
sudo shutdown -h now "Apagando con seguridad"
- Apagar en 5 minutos con aviso:
sudo shutdown -h +5 "El sistema se apagará en 5 minutos. Guarda tu trabajo."
- Reiniciar a las 23:00 (mantenimiento nocturno):
sudo shutdown -r 23:00 "Reinicio programado a las 23:00"
Buenas prácticas que me funcionan
- Siempre incluyo un mensaje claro: reduce tickets y sorpresas.
- Si es un entorno multiusuario, dejo al menos 10–15 min y reviso sesiones activas (ver sección de servidores).
- Tras programar, anoto el evento en mi runbook o ticket para que quede trazabilidad.
4. Cancelar un apagado y comunicar con wall
Si cambian los planes, cancelo y aviso:
sudo shutdown -c
echo "Mantenimiento cancelado. No habrá apagado." | sudo wall
-c
detiene el temporizador de shutdown
. Con wall
envío un mensaje inmediato a todas las terminales de usuarios logados. Es una cortesía mínima que evita sustos.
5. Apagado seguro en servidores: web, contenedores y bases de datos
Aquí es donde más cuidado pongo. Mi checklist típico antes de ejecutar el apagado:
Checklist express
- Drenar tráfico: poner el servidor en mantenimiento (LB, reverse proxy o
systemctl stop nginx
/apache2
). - Contenedores: parar con orden (
docker compose down
odocker stop
), verificar que no quedan jobs críticos. - Bases de datos: cerrar conexiones y parar el servicio con su unidad (
systemctl stop postgresql
/mysqld
). Esperar a que el buffer se vacíe. - Jobs en background: revisar colas/queues (ej. Sidekiq/Celery/cron en curso).
- Usuarios: avisar con
wall
y dar margen. - Sincronizar (opcional si hay mucha E/S):
sync
- Apagar:
sudo systemctl poweroff
- o programado con
shutdown
si necesito ventana.
Cuando probé a ignorar la coreografía (sobre todo con BBDD), las probabilidades de que algo quedara “a medio cerrar” subían. Desde que sigo esta secuencia, los reinicios post-mantenimiento son aburridos… como debe ser.
Uso diario en portátil y VPS: atajos que evitan problemas
En el portátil, si estoy con muchas ventanas y compilaciones, prefiero:
sudo shutdown -h +5 "Apagando con seguridad"
Ese margen permite que editores, contenedores locales y procesos liberen recursos. En un VPS de un solo usuario hago algo similar, y si voy con prisa:
sudo systemctl reboot
para reinicios rápidos que respetan dependencias de systemd
. He visto equipos “sobrevivir” a cortes de luz, pero esa falsa sensación de seguridad pasa factura en el peor momento: la corrupción rara vez avisa al instante.
Automatizar con cron
, at
y timers de systemd
Con at
(una sola vez):
echo 'shutdown -h now "Apagado planificado"' | sudo at 23:00
Con cron
(repetitivo, p. ej. domingos a las 23:30):
sudo crontab -e
30 23 * * 0 /sbin/shutdown -h now "Mantenimiento semanal"
Timers de systemd
(mi favorito en sistemas modernos: logs nativos, dependencias y unidades):
- Unidad de servicio:
/etc/systemd/system/maintenance-shutdown.service
[Unit]
Description=Apagado planificado
[Service]
Type=oneshot
ExecStart=/sbin/shutdown -h now "Ventana de mantenimiento"
- Timer:
/etc/systemd/system/maintenance-shutdown.timer
[Unit]
Description=Programa el apagado semanal
[Timer]
OnCalendar=Sun 23:30
Persistent=true
[Install]
WantedBy=timers.target
- Activar:
sudo systemctl daemon-reload
sudo systemctl enable --now maintenance-shutdown.timer
Cron vs Timer
- Cron: sencillo y universal.
- Timer systemd: mejor integración, reintentos y registro; ideal en distros modernas.
Errores comunes y cómo evitarlos
- Apagar con prisas: no revisar servicios ni usuarios. → Solución: checklist y mensajes
wall
. - Confiar en “sobrevivió una vez”: esa es la trampa. → Solución:
shutdown
/systemctl
siempre. - No cancelar a tiempo: olvidas
-c
. → Solución: alias útil:alias sd-c='sudo shutdown -c && echo Cancelado | sudo wall'
. - Cerrar BBDD a las malas: riesgo de corrupción. → Solución: parar con su servicio y esperar confirmación.
- No usar hora local clara: confusiones con
hh:mm
. → Solución: documentar zona horaria y preferir+m
para ventanas cortas.
Ejemplos rápidos listos para copiar
- Apagar ya:
sudo shutdown -h now "Apagando con seguridad"
- Reiniciar en 10 minutos:
sudo shutdown -r +10 "Reinicio programado"
- Apagar a las 23:00:
sudo shutdown -h 23:00 "Apagado nocturno"
- Cancelar:
sudo shutdown -c
- Avisar manualmente:
echo «El sistema se apagará en breve. Guarda tu trabajo.» | sudo wall
FAQs sobre shutdown
¿Qué hace shutdown
que no hace el botón físico?
Orquesta cierre limpio: señales a procesos, parada ordenada de servicios, sincronización de discos y desmontaje seguro.
¿shutdown -h
vs poweroff
vs systemctl poweroff
?
Todos apagan; systemctl poweroff
integra dependencias/unidades de systemd
. Uso shutdown
cuando quiero programar/aprobar mensajes; systemctl
para apagar ahora dentro del ecosistema systemd
.
¿Cómo aviso a usuarios antes de apagar?
Mensaje en el propio shutdown
y, si hace falta, wall
. Deja margen (≥10–15 min) en sistemas multiusuario.
¿Cómo programo a las 23:00 y lo cancelo?shutdown -h 23:00 "Mensaje"
y, si cambias de idea, shutdown -c
+ wall
para avisar.
¿Qué precauciones con BBDD/containers?
Parar servicios con orden, esperar a que vacíen buffers/colas, y luego apagar. Esa disciplina evita mañanas de pánico.
Importante sobre shutdown
Apagar bien no es burocracia: es seguridad operativa. En mi experiencia, tratar el apagado como una coreografía (avisar, drenar, parar servicios, sincronizar, apagar) es lo que separa un mantenimiento rutinario de una guerra con los logs. Con shutdown
y systemd
tienes todo lo necesario para hacerlo limpio, predecible y sin sustos.
Opinión Personal
Hay costumbres que parecen inocentes… hasta que no lo son. “Mantengo pulsado el botón y arreando”. Lo he visto demasiadas veces. Y, sí, muchas máquinas “sobreviven” al maltrato; justo por eso nace la falsa sensación de seguridad. Pero detrás de un simple shutdown
hay una coreografía que merece respeto: servicios que deben detenerse con orden, procesos que necesitan liberar recursos, cachés que hay que vaciar y sistemas de archivos que han de quedar consistentes. Ignorar esa coreografía es como irte de casa sin cerrar la puerta: puede no pasar nada hoy, pero el día que pase, te acordarás.
Para mí, un buen apagado no es burocracia; es cultura operativa. Cuando trabajas con contenedores, bases de datos o un servidor web, no es opcional. Es la diferencia entre arrancar sin dramas o pasarte la mañana reparando tablas y persiguiendo corrupción silenciosa. He estado en ambos lados y, créeme, prefiero el lado aburrido en el que todo cae con elegancia y vuelve con la misma elegancia.
Me molesta la épica del “no tengo tiempo”. ¿De verdad no tienes 30 segundos para escribir shutdown -h now "Apagando con seguridad"
o programar un -h +5
para dar margen a los procesos? Si tu tiempo vale oro, más razón para no desperdiciarlo arreglando lo que se rompe por pereza. Un apagado ordenado es como lavarte las manos en cocina: no luce, nadie aplaude, pero evita problemas que cuestan dinero.
También me he cruzado con la excusa del “es un portátil, ¿qué más da?”. Da. Porque el portátil de hoy es el repo que mañana no compila, el VM que pierde una transacción, el contenedor que arranca raro y te roba una hora de vida. Si sigues una mínima disciplina —avisar, esperar, cerrar servicios— la probabilidad de susto baja radicalmente. En mi experiencia, programar el apagado con unos minutos de colchón me ha ahorrado más disgustos de los que puedo contar.
Hablemos de servidores. Un cierre a las bravas no solo es mala educación técnica: es una falta de respeto al trabajo de tu equipo. Drenar tráfico, parar contenedores con orden, cerrar conexiones de base de datos, sincronizar discos, avisar a usuarios con un wall
. No es ciencia ficción; son cinco pasos que puedes convertir en rutina. El día que haya una incidencia, agradecerás haber hecho “lo correcto” cien veces antes: los sistemas bien tratados fallan menos y, cuando fallan, lo hacen de forma comprensible.
No defiendo el ritualismo vacío ni el perfeccionismo. Defiendo la profesionalidad. Y la profesionalidad se demuestra en los detalles invisibles: en no vender prisa por eficiencia; en preferir un systemctl poweroff
con dependencias claras antes que un “zas” de botón; en documentar un apagado programado para que nadie se lleve un susto. He aprendido que el tiempo invertido en hacer las cosas con cariño se recupera multiplicado cuando toca mantener o escalar.
Mi postura es simple: apagar bien es un acto de respeto. Respeto por tus datos, por tu tiempo futuro, por las personas que dependen de ese servicio y, sobre todo, por tu propio criterio profesional. No hace falta convertirlo en un dogma, pero sí en un hábito. Uno que, como todos los buenos hábitos, apenas se nota cuando funciona… y se nota muchísimo cuando falta.
Si tienes que quedarte con una idea, que sea esta: no apagues para salir del paso; apaga para poder volver sin sustos. Ese pequeño cambio de mentalidad separa a quien sobrevive del que opera con calma, previsibilidad y oficio.
¿Tú cómo lo haces? ¿Eres de “apago y ya” o tienes tu propia coreografía? Déjame tus comentarios abajo: me interesa leer tus trucos, tus sustos y tus mejores prácticas.