Ejecuta tareas programadas con AT y SYSTEMD TIMER en Linux

marzo 31, 2025

La automatización de tareas en Linux no solo se basa en CRON. AT y SYSTEMD TIMER ofrecen alternativas más flexibles para ejecutar comandos en momentos específicos sin la necesidad de recurrencia o con mejor integración en entornos modernos. En este artículo, exploraremos estas herramientas en detalle.


1. AT: Ejecutar tareas una única vez

El comando AT permite programar tareas que se ejecutarán una sola vez en un momento determinado. Esto es útil cuando se necesita automatizar procesos puntuales sin que se repitan periódicamente.

Instalación y configuración

AT no siempre viene preinstalado en las distribuciones Linux. Puedes instalarlo con:

sudo apt install at  # Debian/Ubuntu
sudo yum install at  # CentOS/RHEL

Para asegurarte de que el demonio atd está ejecutándose:

sudo systemctl start atd
sudo systemctl enable atd

Programar tareas con AT

Para programar una tarea que se ejecute a una hora específica:

echo "comando_a_ejecutar" | at HH:MM

Ejemplo: Para apagar el sistema a las 23:30:

echo "sudo shutdown -h now" | at 23:30

También puedes ingresar comandos en modo interactivo:

at 15:00
at> echo "Tarea completada" > /home/user/log.txt
at> <Ctrl+D>

Gestionar tareas programadas con AT

  • Listar tareas en cola:atq
  • Eliminar una tarea en cola:atrm <job_id>

2. SYSTEMD TIMER: La alternativa moderna

A diferencia de CRON y AT, SYSTEMD TIMER es parte del ecosistema de systemd y ofrece mayor control y eficiencia en la ejecución de tareas programadas.

Ventajas de SYSTEMD TIMER

  • Mejor integración con systemd.
  • Permite ejecutar tareas en función del arranque del sistema o en intervalos regulares.
  • Ofrece registros detallados mediante journalctl.

Crear un TIMER en systemd

Un temporizador en systemd consta de dos archivos: un servicio y un temporizador.

Paso 1: Crear el servicio

Crea un archivo en /etc/systemd/system/mantenimiento.service con el siguiente contenido:

[Unit]
Description=Mantenimiento automático

[Service]
ExecStart=/home/user/mantenimiento.sh

Paso 2: Crear el temporizador

Ahora, crea el archivo /etc/systemd/system/mantenimiento.timer:

[Unit]
Description=Ejecutar mantenimiento cada domingo a las 2 AM

[Timer]
OnCalendar=Sun *-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

Activar el temporizador

Ejecuta los siguientes comandos para habilitar y ejecutar el TIMER:

sudo systemctl enable --now mantenimiento.timer

Para verificar su estado:

systemctl list-timers

Para ver los registros de ejecución:

journalctl -u mantenimiento.service

3. Comparación entre AT y SYSTEMD TIMER

CaracterísticaATSYSTEMD TIMER
Ejecución únicaNo
RepeticiónNo
Integración con systemdNo
Logs y monitoreoNo

Conclusión

AT y SYSTEMD TIMER son excelentes alternativas a CRON dependiendo de las necesidades del usuario. AT es útil para ejecutar tareas únicas, mientras que SYSTEMD TIMER ofrece una solución moderna, potente y mejor integrada con Linux. Dominar estas herramientas permitirá una automatización más eficiente y segura del sistema.

Comentarios 0

Deja una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *