Systemd es el núcleo de la gestión de servicios en Linux, encargado de iniciar, detener y supervisar procesos de manera eficiente. Conocer cómo funciona systemd es esencial para administradores de sistemas y desarrolladores que buscan mejorar el rendimiento y la confiabilidad de sus servidores. En esta guía completa sobre la gestión de servicios en Linux, aprenderás qué es systemd, cómo funciona y los comandos básicos para controlarlo y optimizar tu sistema.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
Características clave de systemd
- Gestión de servicios:
- Proporciona una forma unificada para iniciar, detener, habilitar y monitorear servicios.
- Inicio paralelo:
- Arranca el sistema más rápido al inicializar servicios en paralelo.
- Manejo de dependencias:
- Garantiza que los servicios se inicien en el orden correcto según sus dependencias.
- Integración con journald:
- Centraliza y estructura los registros del sistema, facilitando el análisis de logs.
- Activación basada en sockets:
- Inicia servicios bajo demanda cuando se accede a un socket (por ejemplo, SSH).
- Manejo de dispositivos y puntos de montaje:
- Monta automáticamente sistemas de archivos y administra la inicialización de dispositivos.
- Timers:
- Reemplaza los trabajos cron con unidades de temporizador más robustas.
- Cgroups (grupos de control):
- Administra procesos utilizando cgroups para asignación de recursos y monitoreo.
Conceptos básicos de systemd
1. Archivos de unidad (Unit Files)
systemd organiza sus tareas en unidades, que son archivos de configuración. Cada unidad representa un servicio, tarea o recurso del sistema.
| Tipo de Unidad | Descripción | Extensión del Archivo |
|---|---|---|
| Servicio | Define un servicio del sistema (por ejemplo, nginx.service). | .service |
| Socket | Maneja la activación por sockets. | .socket |
| Objetivo (Target) | Agrupa unidades para representar estados del sistema. | .target |
| Timer | Reemplaza trabajos cron, activa servicios según un horario. | .timer |
| Montaje (Mount) | Administra puntos de montaje del sistema de archivos. | .mount |
| Dispositivo | Gestiona dispositivos de hardware. | .device |
| Ruta (Path) | Monitorea cambios en rutas para activar servicios. | .path |
2. Objetivos (Targets)
Los objetivos (targets) representan estados del sistema y reemplazan los niveles de ejecución (runlevels) de SysVinit.
| Objetivo | Descripción | Nivel de Ejecución Equivalente |
|---|---|---|
| default.target | El objetivo predeterminado. | Depende de la configuración. |
| multi-user.target | Modo multiusuario sin interfaz gráfica. | Runlevel 3 |
| graphical.target | Modo multiusuario con interfaz gráfica. | Runlevel 5 |
| rescue.target | Modo de rescate (usuario único). | Runlevel 1 |
| shutdown.target | Apaga el sistema. | Runlevel 0 |
Para cambiar de objetivo:
sudo systemctl isolate nombre_del_objetivo.targetComandos comunes de systemd
1. Gestión de servicios
#Iniciar un servicio
sudo systemctl start nombre_del_servicio.service
#Detener un servicio
sudo systemctl stop nombre_del_servicio.service
#Reiniciar un servicio
sudo systemctl restart nombre_del_servicio.service
#Recargar la configuración de un servicio
sudo systemctl reload nombre_del_servicio.service2. Habilitar/Deshabilitar servicios
#Habilitar un servicio para que inicie automáticamente al arrancar
sudo systemctl enable nombre_del_servicio.service
#Deshabilitar un servicio para que no inicie automáticamente
sudo systemctl disable nombre_del_servicio.service3. Ver el estado de un servicio
#Mostrar si el servicio está activo, su configuración y los logs recientes.
udo systemctl status nombre_del_servicio.service4. Listar unidades
#Listar todas las unidades activas
systemctl list-units
#Listar todos los servicios cargados (incluidos los inactivos)
systemctl list-units --type=service5. Analizar el rendimiento del arranque
#Ver el tiempo de arranque del sistema
systemd-analyze
#Identificar servicios que ralentizan el arranque
systemd-analyze blameTrabajando con archivos de unidad
Ver la configuración de un archivo de unidad
systemctl cat nombre_del_servicio.serviceEditar un archivo de unidad
Esto abre el archivo de unidad para personalizarlo.
sudo systemctl edit nombre_del_servicio.serviceRecargar los archivos de unidad
Si se hacen cambios, recarga la configuración de systemd:
sudo systemctl daemon-reloadDominar systemd y la gestión de servicios en Linux te permitirá tener control total sobre tu sistema, desde el arranque hasta la supervisión de procesos críticos. Aprender sus comandos, configuración y buenas prácticas no solo mejora la eficiencia de tu trabajo, sino que también te convierte en un profesional más competitivo en el mundo de la administración de sistemas.

