Timers en systemd: alternativa a cron

Los timers en systemd (temporizadores) son un tipo especial de unidad. Su función principal consiste en permitirnos agendar tareas de forma periódica de forma similar a cron. Sin embargo, presentan la particularidad de poseer mayor flexibilidad a la hora de especificar cuándo ha de llevarse a cabo una acción. A continuación, introduciremos el tema para que podamos considerarlo como alternativa.

Timers en systemd

Los archivos de definición de los temporizadores se caracterizan por tener la extensión .timer. Estos archivos contienen las instrucciones para controlar un servicio o evento. Para ilustrar, analicemos el ejemplo que vemos en la Fig. 1:

Timers en systemd: archivo de configuración de ejemplo
Figura 1 – Timers en systemd: archivo de configuración de ejemplo
  • En la sección [Unit] encontraremos una descripción del temporizador, mientras que debajo de [Timer] veremos la configuración propiamente dicha, donde
  • OnCalendar indica fecha y hora en la que se debe disparar el timer. En este caso particular, será todos los días de todos los meses de todos los años a las 6 y 18:00 hs.
  • RandomizedDelaySec=12h especifica un intervalo de demora al azar que se puede llegar a aplicar al temporizador, entre 0 y el valor indicado.
  • Persistent=true nos dice que si systemd no disparó el timer en una ocasión previa (por ejemplo, si el equipo estaba apagado), lo hará de forma automática apenas sea posible.

Por último, veamos qué sucede en el caso de que no se muestre la directiva Unit (no confundir con la sección que lleva el mismo nombre). Bajo esta situación, el temporizador controlará el servicio que tenga el mismo nombre. Veamos dos ejemplos en la Fig. 2:

Timers en systemd y los servicios que controlan
Figura 2 – Timers en systemd y los servicios que controlan

En otras palabras, apt-daily.timer y apt-daily-upgrade.timer controlarán los servicios relacionados (apt-daily.service y apt-daily-upgrade.service). Por suerte, todo esto sucede esto sin necesidad de especificarlo en el archivo de configuración del timer.

Espero que este post les haya resultado útil. ¡No olviden suscribirse al blog para no perderse el próximo!