Por qué mi Debian tardaba 10 segundos en apagarse (y cómo lo arreglé)

La pregunta del millón: ¿Por qué, si tengo un  NVMe de 7000 MB/s que vuela, el sistema se queda "pensando" al salir?

El problema: El exceso de "cortesía" de Debian

Después de investigar mis servicios con systemctl, me di cuenta de que mi Debian recién instalado estaba intentando ser "demasiado amable". Venía cargado con servicios de oficina y redes que yo no había pedido, en parte culpa mia, por usar el debian live para CD, ya que normalmente uso el minimal.

El culpable del delay al apagar suele ser el tiempo de espera (timeout). El sistema le dice a un servicio: "Oye, voy a apagarme, cierra tus cosas". Si el servicio (como el de correo Exim4 o el de red Avahi) se queda esperando una respuesta de la red que ya no existe, el sistema se bloquea hasta que se rinde y lo mata a la fuerza. Esos segundos de espera son los que nos roban la fluidez, me pasa con CUPS y eso que no tengo impresoras, pero algunos días va fino y otros piensa unos 20 segundos antes de morir.

Los servicios que yo no necesitaba (y tú probablemente tampoco)

Si como yo, usas tu equipo para desarrollo o uso personal, pero no tienes una impresora en cada esquina ni montas un servidor de correo en tu propia torre, estos procesos son puro lastre:

  1. Exim4: Mi PC no es un servidor de correos. Tener esto intentando gestionar colas de mensajes al apagar  le añadia un par de segundos al apagar y alguno al encender.

  2. Avahi-Daemon: Muy útil si quieres que tu Mac detecte tu Debian por arte de magia, pero si no compartes nada en red local, solo genera ruido.

  3. ModemManager: A menos que le pinches un pincho 3G de hace diez años, este servicio solo gasta ciclos de CPU buscando un hardware que no tienes.

  4. CUPS (Impresión): Si no imprimes, CUPS es un ninja que a veces se queda atrapado al cerrar los sockets de red, retrasando el cierre del sistema.

Se pueden desinstalar, aunque no se si usare una impresora un día así que los deshabilitamos

 
Usamos disable y --now que es deshabilitar y detenet, si usamos solo disable lo deshabilita pero no lo detiene, pero en el siguiente arranque no iniciará.
# Adiós al delay del correo y redes locales
sudo systemctl disable --now exim4 exim4-base.timer avahi-daemon avahi-daemon.socket

# Si no imprimes ni usas módems antiguos
sudo systemctl disable --now cups.service cups-browsed.service ModemManager

# El truco final: acortar el tiempo de paciencia de Systemd
# Edité /etc/systemd/system.conf y bajé el DefaultTimeoutStopSec a 5s

Conclusión

No aceptes que tu Linux tarde en arrancar o apagar "porque sí". Debian es una roca, pero a veces viene con la mochila demasiado llena de herramientas de oficina que no usamos. Una limpieza de servicios no solo libera memoria, sino que devuelve esa sensación de control total sobre tu hardware.

En todo caso, si quieres evitar esto, usa la ISO minimal, en este caso tenia un livecd y he usado ese pero ya vez, ahorras tiempo por un lado y terminas metiendo mano a otras cosas por otro lado.