05 · Systemd básico
Systemd es el "gestor del sistema": arranca el sistema, controla servicios, montajes, temporizadores, la red y los logs. Es el equivalente a los Servicios y el Programador de tareas de Windows, pero mucho más potente.
¿Qué es un servicio?
Un servicio (o daemon) es un programa que corre en segundo plano sin ventana. Ejemplos: el servidor de red (NetworkManager), SSH (sshd), Bluetooth (bluetooth), tu servidor de IA (ollama), el gestor de pantalla (gdm, sddm).
Cada servicio se describe en un archivo de unidad que termina en .service y vive en /etc/systemd/system/ (los que tú creas) o /usr/lib/systemd/system/ (los que vienen con paquetes).
Comandos esenciales de systemctl
| Comando | Qué hace |
|---|---|
systemctl status servicio | Ver estado actual |
sudo systemctl start servicio | Arrancar ahora |
sudo systemctl stop servicio | Parar ahora |
sudo systemctl restart servicio | Reiniciar |
sudo systemctl reload servicio | Recargar config sin parar |
sudo systemctl enable servicio | Activar arranque automático |
sudo systemctl disable servicio | Desactivar arranque automático |
sudo systemctl enable --now servicio | Activar + arrancar de una vez |
systemctl is-enabled servicio | Ver si está en auto-arranque |
systemctl is-active servicio | Ver si está corriendo ahora |
systemctl list-units --type=service | Listar todos los servicios |
systemctl list-unit-files --type=service | Listar todos los archivos disponibles |
Ejemplo con NetworkManager
systemctl status NetworkManager
sudo systemctl restart NetworkManager
sudo systemctl enable --now NetworkManager
systemctl is-active NetworkManager
Ver el estado con detalle
systemctl status ollama
# Salida típica:
# ● ollama.service - Ollama Service
# Loaded: loaded (/usr/lib/systemd/system/ollama.service; enabled)
# Active: active (running) since ...
# Main PID: 1234 (ollama)
# Tasks: 15
# Memory: 220M
Si algo falla, verás Active: failed y debajo las últimas líneas del log. Ese es el primer lugar donde mirar.
Logs: journalctl
Systemd guarda todo lo que pasa en el sistema en su journal. Es como el Visor de Eventos de Windows pero en terminal.
journalctl -u ollama # logs de un servicio
journalctl -u ollama -f # seguirlos en vivo (Ctrl+C salir)
journalctl -u ollama --since "1 hour ago"
journalctl -u ollama -n 100 # últimas 100 líneas
journalctl -xe # últimos errores del sistema
journalctl -b # logs de este arranque
journalctl -b -1 # logs del arranque anterior
journalctl --disk-usage # cuánto ocupa el journal
Servicios de sistema vs. de usuario
| Tipo | Ubicación | Comando | ¿Necesita sudo? |
|---|---|---|---|
| Sistema | /etc/systemd/system/ |
systemctl ... |
Sí |
| Usuario | ~/.config/systemd/user/ |
systemctl --user ... |
No |
Regla general: si el servicio afecta a todo el sistema (red, drivers, montaje), es de sistema. Si es algo tuyo (un script personal, un servidor de IA para tu usuario), es de usuario.
Habilitar vs. arrancar
Esta distinción es clave:
- start: arranca ahora, pero si reinicias, no vuelve.
- enable: lo marca para que se arranque solo en cada inicio, pero no lo arranca ahora.
- enable --now: hace las dos cosas.
.service, siempre ejecuta antes sudo systemctl daemon-reload para que systemd relea las definiciones. Si no, tus cambios no se aplican.
🧪 Práctica sugerida
systemctl status NetworkManagerpara ver el estado de la red.systemctl list-units --type=service --state=runningpara ver servicios activos.journalctl -xepara ver los últimos eventos del sistema.