Saltar al contenido

4.3 Servicios y Systemd

¡Prepárate!

  • Entenderás el concepto de Daemon (Demonio). - Sabrás utilizar systemctl para ver el estado, reiniciar y parar servicios como Apache o SSH. - Aprenderás la vital diferencia para la producción entre restart y reload.
  • Aprenderás a enganchar servicios para que inicien automáticamente (enable).

Habrás notado que al encender Linux, la red funciona, el servidor SSH te deja entrar, y el servidor Web funciona. Pero tú no iniciaste esos programas a mano ejecutando aplicaciones.

Esos programas se llaman Demonios (Daemons, que suele abreviarse con una ‘d’ al final, como sshd o systemd). Son programas invisibles y sin interfaz que viven de fondo en la memoria RAM. Al capataz total de todos estos programas que decide quién nace, quién muere y quién reinicia se le llama Systemd.

Y a menos que instales Linux desde 0 en tu smartwatch, usarás su comando principal: systemctl.


El comando Control de Systemd (systemctl) espera una orden y el nombre de una Unidad (generalmente finalizada en .service). Usemos de ejemplo el servidor web de Debian (nginx o apache2).

ventana terminal
systemctl status nginx

Esto te imprimirá un cuadro vital inestimable. De un solo vistazo verás:

  • Si está en verde (active (running)) o rojo (failed).
  • Si ha colapsado, imprimirá textualmente las 10 últimas líneas del fichero de error explicándote por qué.

Para hacer la modificación en caliente de la memoria RAM.

ventana terminal
sudo systemctl stop nginx
sudo systemctl start nginx

Si cambias un archivo de configuración de Nginx (por ejemplo, añades una página web nueva), el Demonio que reside en memoria RAM no se entera porque no está leyendo el archivo de texto a cada segundo. Debes forzar a que lo lea. Tienes dos enfoques:

  • La Ruleta Rusa (restart):

    ventana terminal
    sudo systemctl restart nginx

    Esto mata instantáneamente el proceso, tira la conexión de todos los clientes bajándose descargas de tu web, y enciende un proceso nuevo. Es una animalada en Producción si no hay un error grave.

  • El Toque Cuidudoso (reload):

    ventana terminal
    sudo systemctl reload nginx

    Le envía una señal elegante al Demonio: “Oye, cuando termines de atender a las descargas que tienes a medias, reléete el archivo de configuración a ver si ha habido cambios ”. Cero micro-cortes, máxima profesionalidad.


2. Inmortalizar un Servicio (Enable / Disable)

Sección titulada “2. Inmortalizar un Servicio (Enable / Disable)"

Que tú des start a un servicio web ahora mismo, no asegura de ninguna manera que si el servidor sufre un corte eléctrico y reinicia, el servicio vaya a auto-arrancar.

Para enganchar profundamente un Demonio al ciclo de encendido de la Fase 5 del Sistema, y garantizar su ejecución automática tras reiniciar, debemos Habilitarlo:

ventana terminal
# Enganchar el arranque automático ("Crear Symlink")
sudo systemctl enable nginx
# Retirarlo del arranque automático (Eliminar Symlink)
sudo systemctl disable nginx
# Si quieres que encienda AHORA MISMO y además engancharlo al futuro
# (Truco LFCS con el modificador --now)
sudo systemctl enable --now nginx

  1. Has editado el archivo /etc/ssh/sshd_config tal y como aprendimos en la Clase 3 para desactivar los reseteos de contraseña. Actualmente hay otros 5 sysadmins de tu empresa conectados al servidor simultáneamente transfiriendo grandes configuraciones críticas y no quieres desconectarlos de golpe. ¿Cómo recomunidas al demonio SSH que acate tus cambios en la configuración reduciendo la fricción a cero?

  2. Acabas de instalar el gestor de bases de datos MariaDB (apt install mariadb-server). Tu plan es migrar bases de datos todo este mes, pero aún no quieres que la base de datos se ponga a iniciarse automáticamente devorando 2GB de RAM cada vez que reinicias la máquina. ¿Cómo detienes el inicio automático desenganchando la orden de auto-reinicio?

  3. Te quejas de que tu pequeña web no carga. Ejecutas systemctl status apache2 y el CLI retorna texto diciendo: Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: enabled) y Active: inactive (dead). Analizando forensemente el mensaje, ¿Qué deducción sacamos?