¿Qué hace systemctl?

Un servicio es un proceso de fondo (daemon) que se ejecuta sin cliente directo: servidor web, base de datos, cupón/leche… cosas que viven en silencio.

systemd organiza los servicios como units (unidades). Una unit puede ser:

  • service → servicios
  • timer → programadores sustitutos del cron
  • mount → puntos de montaje
  • socket → servicios socket-activados
  • y más fauna, pero hoy nos interesa el zoológico *.service.

¿Qué hace systemctl?

systemctl permite:

  • Iniciar/detener un servicio.
  • Habilitarlo o deshabilitarlo en arranque.
  • Ver logs y estado.
  • Ver dependencias.

Su sintaxis general:

systemctl <acción> <unidad>

Ejemplo:

systemctl start apache2.service

Ver servicios instalados

Esto ayuda a explorar el sistema:

Servicios activos ahora mismo:





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

Todos los servicios cargados (activos + inactivos):





systemctl list-units --type=service

Servicios instalados en el sistema (cargados y no cargados):





systemctl list-unit-files --type=service

Estado de un servicio

Es la acción más frecuente.





systemctl status apache2.service

Muestra:

• PID
• Logs recientes
• “Loaded” (si está instalado)
• “Active” (si está corriendo)

La magia aquí es que systemd integra parte del journal, así que ya da contexto.


Iniciar / Detener / Reiniciar

Aquí es donde la clase empieza a levantar humo.

Iniciar servicio:





sudo systemctl start apache2.service

Detener:





sudo systemctl stop apache2.service

Reiniciar de forma limpia:





sudo systemctl restart apache2.service

Recargar configuración sin detener el servicio (si lo soporta, como Nginx):





sudo systemctl reload nginx.service

Para puristas: restart tira y relanza, reload solo recarga configuración.


Habilitar en el arranque

Esto conecta systemd con los “targets” (equivalentes modernos de runlevels).

Habilitar:





sudo systemctl enable apache2.service

Deshabilitar:





sudo systemctl disable apache2.service

Comprobar si está habilitado:





systemctl is-enabled apache2.service

Esto crea o elimina enlaces simbólicos en /etc/systemd/system/.


Ver logs de un servicio

journalctl es el diario íntimo del sistema. Útil para debugging y para descubrir que olvidaste escapar ese símbolo en la config de Postfix.

Logs recientes del servicio:





journalctl -u apache2.service

Logs en tiempo real (“modo Matrix”):





journalctl -u apache2.service -f

Logs de hoy con timestamps:





journalctl -u apache2.service --since today