Gestión de procesos en Linux con systemd

Aprende a gestionar servicios y procesos en Linux con systemd: iniciar, detener, habilitar y monitorizar desde terminal.

Si trabajas con Linux, tarde o temprano necesitarás lanzar, detener o supervisar servicios. systemd es el sistema de inicio y gestor de servicios estándar en la mayoría de distribuciones modernas (Ubuntu, Debian, Fedora, Arch). Conocer sus comandos básicos te ahorrará tiempo y te dará control total sobre los procesos de tu servidor o equipo de escritorio.

Ver el estado de los servicios

Lo primero es saber qué está corriendo. Con systemctl puedes listar todas las unidades activas:

systemctl list-units --type=service --state=running

Para ver un servicio concreto, por ejemplo nginx:

systemctl status nginx

Este comando te muestra si está activo, su PID, memoria, y las últimas líneas de log. Si algo falla, aquí verás el error rápidamente.

Arrancar, parar y reiniciar servicios

El control básico se hace con systemctl seguido de la acción y el nombre del servicio:

# Iniciar un servicio
sudo systemctl start apache2

# Detenerlo
sudo systemctl stop apache2

# Reiniciarlo (corta y vuelve a arrancar)
sudo systemctl restart apache2

# Recargar configuración sin interrumpir el servicio
sudo systemctl reload apache2

La diferencia entre restart y reload es importante: restart detiene el proceso y lo levanta de nuevo (pérdida momentánea de conexiones), mientras que reload aplica cambios en caliente (ideal para servidores web).

Habilitar o deshabilitar servicios al arranque

No todos los servicios deben iniciarse automáticamente al encender el sistema. Con systemctl puedes controlarlo:

# Habilitar para que arranque con el sistema
sudo systemctl enable nginx

# Deshabilitar (no arrancará automáticamente)
sudo systemctl disable nginx

# Verificar si está habilitado
systemctl is-enabled nginx

Si necesitas que un servicio arranque solo una vez, puedes usar systemctl enable --now nombre que lo habilita y lo inicia en un solo paso.

Crear tu propia unidad de servicio

Si tienes un script o aplicación que quieres gestionar como servicio, crea un archivo .service en /etc/systemd/system/. Por ejemplo, para un bot de Python:

[Unit]
Description=Mi bot de Telegram
After=network.target

[Service]
ExecStart=/usr/bin/python3 /home/usuario/bot.py
Restart=always
User=usuario
WorkingDirectory=/home/usuario

[Install]
WantedBy=multi-user.target

Guarda el archivo como mibot.service y luego:

sudo systemctl daemon-reload
sudo systemctl start mibot
sudo systemctl enable mibot

A partir de ese momento, tu script se comporta como un servicio más: puedes ver su estado, logs con journalctl -u mibot, y se reiniciará automáticamente si falla.

Conclusión

systemd simplifica enormemente la gestión de procesos en Linux. Con solo cuatro o cinco comandos puedes controlar cualquier servicio, desde un servidor web hasta un script casero. Aprender a crear tus propias unidades te dará flexibilidad total para automatizar tareas y mantener tus aplicaciones funcionando sin intervención manual.