systemctl y systemd explicado fácil (con ejemplos reales)
Introducción
Si trabajas con Linux moderno, hay una herramienta que vas a usar constantemente:
👉 systemctl
Este comando forma parte de systemd, el sistema que gestiona servicios y procesos del sistema.
Antes de systemd, Linux usaba otros sistemas como init o upstart, pero hoy en día systemd es el estándar en la mayoría de distribuciones.
Aprender systemctl es clave si quieres:
- iniciar o detener servicios
- configurar servidores
- manejar MySQL, Nginx, Apache
- trabajar con VPS
- automatizar arranque de servicios
- hacer debugging de servicios
Qué es systemd
systemd es el sistema que gestiona:
- servicios
- procesos del sistema
- arranque del sistema
- dependencias entre servicios
👉 Es el “director de orquesta” de Linux.
Qué es systemctl
systemctl es el comando que usas para interactuar con systemd.
Con él puedes:
- iniciar servicios
- detenerlos
- reiniciarlos
- ver estado
- habilitar al arranque
Qué es un servicio
Un servicio es un proceso que corre en segundo plano.
Ejemplos:
- nginx
- mysql
- ssh
- docker
Ver estado de un servicio
systemctl status nginx
Esto muestra:
- si está activo
- logs recientes
- PID
- errores
Iniciar un servicio
sudo systemctl start nginx
Detener un servicio
sudo systemctl stop nginx
Reiniciar un servicio
sudo systemctl restart nginx
Recargar configuración (sin reiniciar)
sudo systemctl reload nginx
👉 Muy útil en producción.
Ver si un servicio está activo
systemctl is-active nginx
Ver todos los servicios
systemctl list-units --type=service
Habilitar servicio al iniciar el sistema
sudo systemctl enable nginx
👉 Se ejecutará al arrancar el sistema.
Deshabilitar servicio
sudo systemctl disable nginx
Diferencia entre start y enable
start→ lo ejecuta ahoraenable→ lo ejecuta al arrancar
👉 Importante entender esto.
Logs de un servicio con journalctl
journalctl -u nginx
👉 Muy útil para debugging.
Ver logs en tiempo real
journalctl -u nginx -f
Ejemplo real: MySQL no arranca
systemctl status mysql
👉 Verás error.
Luego:
journalctl -u mysql
👉 Detectas problema.
Ejemplo real: reiniciar servidor web
sudo systemctl restart nginx
Ejemplo real: habilitar SSH
sudo systemctl enable ssh sudo systemctl start ssh
Qué son los unit files
systemd usa archivos llamados units.
Ubicación:
/etc/systemd/system/
Ahí defines servicios personalizados.
Crear un servicio propio
Ejemplo básico:
[Unit] Description=Mi app [Service] ExecStart=/usr/bin/node app.js [Install] WantedBy=multi-user.target
Recargar systemd después de cambios
sudo systemctl daemon-reload
Errores comunes
- olvidar
sudo - usar
starten vez deenable - no revisar logs
- no recargar daemon
- no entender dependencias
Conclusión:
systemctl es una de las herramientas más importantes en Linux moderno.
Si sabes:
- ver estado
- iniciar/detener servicios
- leer logs
- habilitar servicios
👉 ya puedes administrar servidores de verdad.