fbpx Domina los systemd units y timers en Linux: Guía práctica | Certificação Linux

Domina los systemd units y timers en Linux: Guía práctica

📅 19/07/2026 ⏱ 6 min ✍️ Uira Ribeiro
Domina los systemd units y timers en Linux: Guía práctica
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

Gestionar servicios y tareas programadas de forma eficiente es crucial para cualquier sysadmin o DevOps engineer. Este artículo resuelve el problema de cómo dominar las units y timers de systemd en Linux, explicando no solo el 'cómo hacer', sino también el 'por qué funciona así'. Comprender estos conceptos es vital para optimizar la gestión de servicios y automatizaciones en entornos Linux.

¿Qué son las units de systemd?

Las units de systemd son las entidades básicas de systemd, el sustituto moderno del SysVinit. Cada unit representa un servicio, montaje, socket, dispositivo o timer. Systemd utiliza estas units para gestionar e iniciar servicios durante el boot y para mantener el sistema en un estado deseado.

Cada unit se define en un archivo .service, .mount, .socket, etc., ubicado en /etc/systemd/system/ o /usr/lib/systemd/system/. Estos archivos están escritos en un formato INI y contienen secciones como [Unit], [Service], y [Install].


[Unit]
Description=Example Service
After=network.target

[Service]
ExecStart=/usr/bin/example
Restart=always

[Install]
WantedBy=multi-user.target

En este ejemplo, la unit define un servicio que inicia después de que la red esté lista (After=network.target), ejecuta el comando /usr/bin/example y se reinicia siempre que falla (Restart=always).

Cómo crear y gestionar units de systemd

Para crear una nueva unit, puedes escribir manualmente un archivo .service o usar herramientas como systemctl edit para crear un override. Después de crear o modificar una unit, debes recargar la configuración de systemd con systemctl daemon-reload.


# Criar um novo serviço
sudo systemctl edit example.service

# Adicionar o conteúdo da unit
[Service]
ExecStart=/usr/bin/example

# Recarregar a configuração
sudo systemctl daemon-reload

# Habilitar e iniciar o serviço
sudo systemctl enable example.service
sudo systemctl start example.service

Después de ejecutar estos comandos, el servicio estará habilitado para iniciar en el boot y comenzará a ejecutarse inmediatamente. Puedes verificar el estado del servicio con systemctl status example.service.

Entendiendo los timers de systemd

Los timers de systemd se utilizan para programar tareas recurrentes, similares a los cron jobs, pero con más flexibilidad e integración con systemd. Cada timer está asociado a una unit, que se activa cuando el timer dispara.


[Unit]
Description=Run example daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

En este ejemplo, el timer está configurado para disparar diariamente (OnCalendar=daily) y la flag Persistent=true garantiza que la tarea se ejecutará incluso si el sistema está apagado en el horario programado.

Cómo crear y gestionar timers de systemd

Para crear un timer, primero debes crear la unit asociada y luego crear el archivo de timer. Después de crear ambos, debes habilitar e iniciar el timer.


# Criar a unit associada
sudo systemctl edit example.service

# Adicionar o conteúdo da unit
[Service]
ExecStart=/usr/bin/example

# Criar o timer
sudo systemctl edit example.timer

# Adicionar o conteúdo do timer
[Unit]
Description=Run example daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

# Recarregar a configuração
sudo systemctl daemon-reload

# Habilitar e iniciar o timer
sudo systemctl enable example.timer
sudo systemctl start example.timer

Con estos comandos, el timer estará habilitado para iniciar en el boot y comenzará a contar para el próximo disparo. Puedes verificar el estado del timer con systemctl status example.timer.

Diferencias entre systemd y SysVinit

Systemd ofrece varias ventajas sobre SysVinit, incluyendo inicio paralelo de servicios, dependencias más claras y gestión de sockets y dispositivos. Mientras que SysVinit utiliza scripts en /etc/init.d/ y niveles de ejecución, systemd utiliza units y targets para gestionar el estado del sistema.

Además, systemd proporciona una API D-Bus para interactuar con servicios y timers, permitiendo una integración más profunda con otras herramientas y scripts. Esto hace que systemd sea más adecuado para sistemas modernos que requieren alta disponibilidad y escalabilidad.

Inicio paralelo vs secuencial

Una de las principales diferencias entre systemd y SysVinit es la forma en que los servicios se inician. SysVinit inicia servicios secuencialmente, lo que puede resultar en tiempos de boot más largos. Por otro lado, systemd inicia servicios en paralelo, lo que reduce significativamente el tiempo de boot.

Errores comunes y cómo evitarlos

  • Olvidar recargar la configuración: Después de crear o modificar una unit o timer, es crucial recargar la configuración de systemd con systemctl daemon-reload. Olvidar este paso resultará en errores al intentar habilitar o iniciar la unit.
  • Usar rutas absolutas incorrectas: Asegúrate de que las rutas especificadas en ExecStart y otros campos sean correctas. Rutas incorrectas resultarán en fallos al iniciar el servicio.
  • Ignorar dependencias: Definir dependencias correctas en After= y Before= es crucial para garantizar que los servicios se inicien en el orden correcto. Ignorar dependencias puede llevar a fallos y comportamientos inesperados.
  • Olvidar habilitar el timer: Después de crear un timer, es necesario habilitarlo con systemctl enable para que se active en el boot. Olvidar este paso resultará en timers que no disparan.
  • Usar sintaxis incorrecta en timers: La sintaxis para timers puede ser compleja. Asegúrate de seguir la documentación oficial y probar timers en un entorno de desarrollo antes de ponerlos en producción.

En el examen LPI / CompTIA Linux+

En certificaciones como LPI y CompTIA Linux+, es común encontrar preguntas sobre units y timers de systemd. Los candidatos deben estar familiarizados con:

  • Creación y edición de units y timers
  • Comandos básicos como systemctl start, systemctl enable, y systemctl status
  • Diferencias entre systemd y SysVinit
  • Gestión de dependencias y órdenes de inicio

Conclusión

Dominar las units y timers de systemd es esencial para cualquier sysadmin o DevOps engineer que trabaje con sistemas Linux. Este artículo proporcionó un enfoque práctico y detallado para crear, gestionar y comprender estos conceptos. Al seguir los pasos descritos y evitar los errores comunes, estarás bien preparado para optimizar la gestión de servicios y tareas programadas en tus entornos Linux.

Los próximos pasos incluyen practicar la creación y gestión de units y timers en entornos de desarrollo y, gradualmente, migrar a entornos de producción. Mantente actualizado con la documentación oficial de systemd y explora recursos avanzados, como sockets y montadores, para mejorar aún más tus habilidades.

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp