¿Qué son los temporizadores de systemd?
El temporizador de systemd es un sustituto moderno y potente de los trabajos cron tradicionales, diseñado para programar y activar unidades de servicio de systemd. Simplifica la automatización en Linux al ofrecer mayor flexibilidad, registro y gestión de dependencias que el sistema cron clásico.
¿Por qué usar temporizadores de systemd en lugar de cron?
Los temporizadores de systemd ofrecen varias ventajas sobre cron, lo que los convierte en la opción preferida para automatizar tareas en entornos Linux:
- Gestión unificada: gestiona los temporizadores junto con otras unidades de systemd (iniciar, detener, habilitar, deshabilitar).
- Mejor registro: usa
journalctlpara un registro detallado y la supervisión del estado. - Programación flexible: admite tanto la sintaxis basada en calendario como temporizadores monotónicos (relativos).
- Gestión de eventos perdidos: recupera automáticamente los eventos perdidos tras un reinicio.
Ejemplo rápido: ejecutar un script todos los días a medianoche
Aquí tienes una guía paso a paso para crear un temporizador de systemd que ejecuta un script a diario a medianoche:
1. Crea una unidad de servicio
La unidad de servicio define la acción que se va a realizar, en este caso, ejecutar un script.
Crea el archivo /etc/systemd/system/daily-script.service:
[Unit]
Description=Run my daily script
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript.sh
2. Crea una unidad de temporizador
La unidad de temporizador programa cuándo debe ejecutarse el servicio.
Crea el archivo /etc/systemd/system/daily-script.timer:
[Unit]
Description=Run my daily script every day at midnight
[Timer]
OnCalendar=*-*-* 00:00:00
# The format is: YYYY-MM-DD HH:MM:SS
# The above line schedules the task to run once per day at midnight.
Persistent=true
[Install]
WantedBy=timers.target
3. Habilita e inicia el temporizador
Ejecuta los siguientes comandos para recargar systemd, habilitar el temporizador e iniciarlo de inmediato:
sudo systemctl daemon-reload
sudo systemctl enable --now daily-script.timer
Cómo comprobar el estado y los registros
Una vez configurado tu temporizador, puedes supervisar su estado y sus registros con los siguientes comandos:
- Comprobar los temporizadores activos:
systemctl list-timers
- Ver los detalles del temporizador:
systemctl status daily-script.timer
- Consultar los registros de la ejecución del script:
journalctl -u daily-script.service
Referencias
- Documentación oficial de systemd:
https://www.freedesktop.org/software/systemd/man/systemd.timer.html
Esta es la documentación oficial de los temporizadores de systemd, con la sintaxis, las opciones y ejemplos detallados. - Arch Wiki sobre temporizadores de systemd:
https://wiki.archlinux.org/title/Systemd/Timers
Una guía elaborada por la comunidad, con ejemplos prácticos y consejos para solucionar problemas. - Documentación de Red Hat sobre temporizadores de systemd:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd#sect-Managing_Timers
Una explicación detallada de los temporizadores de systemd para uso empresarial. - Wiki de ayuda de la comunidad de Ubuntu:
https://help.ubuntu.com/community/systemd
Esta página ofrece una visión general de systemd e incluye información sobre los temporizadores.
Resumen
Los temporizadores de systemd son una solución robusta y moderna para automatizar tareas en Linux. Ofrecen mayor fiabilidad, control e integración con systemd que los trabajos cron. Con solo crear una unidad de servicio y una unidad de temporizador sencillas, puedes automatizar tareas como copias de seguridad, sincronización, trabajos de limpieza y mucho más. Tanto si gestionas un servidor personal como una infraestructura empresarial, los temporizadores de systemd son una herramienta esencial para una automatización eficiente en Linux.