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

ComandoQué hace
systemctl status servicioVer estado actual
sudo systemctl start servicioArrancar ahora
sudo systemctl stop servicioParar ahora
sudo systemctl restart servicioReiniciar
sudo systemctl reload servicioRecargar config sin parar
sudo systemctl enable servicioActivar arranque automático
sudo systemctl disable servicioDesactivar arranque automático
sudo systemctl enable --now servicioActivar + arrancar de una vez
systemctl is-enabled servicioVer si está en auto-arranque
systemctl is-active servicioVer si está corriendo ahora
systemctl list-units --type=serviceListar todos los servicios
systemctl list-unit-files --type=serviceListar 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

TipoUbicaciónComando¿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:

Cuando modifiques o crees un archivo .service, siempre ejecuta antes sudo systemctl daemon-reload para que systemd relea las definiciones. Si no, tus cambios no se aplican.

🧪 Práctica sugerida

  1. systemctl status NetworkManager para ver el estado de la red.
  2. systemctl list-units --type=service --state=running para ver servicios activos.
  3. journalctl -xe para ver los últimos eventos del sistema.
Anterior← Pacman