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ística | AT | SYSTEMD TIMER |
---|---|---|
Ejecución única | Sí | No |
Repetición | No | Sí |
Integración con systemd | No | Sí |
Logs y monitoreo | No | Sí |
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.
Deja una respuesta