Automatización en Linux con CRON

marzo 31, 2025

Automatizar tareas en Linux es una habilidad esencial para administradores de sistemas y desarrolladores. En este artículo, exploraremos tres herramientas clave para la programación de tareas en Linux: CRON, AT y SYSTEMD TIMER.

1. CRON: Programación de tareas recurrentes

CRON es un demonio que ejecuta comandos programados a intervalos específicos. Es ideal para tareas repetitivas como copias de seguridad, limpieza de archivos temporales y actualización de software.

Sintaxis de CRON

Los trabajos de cron se definen en archivos llamados crontabs. Cada usuario puede tener su propio crontab. La sintaxis general de una línea en crontab es:

* * * * * comando_a_ejecutar
| | | | |
| | | | ----- Día de la semana (0 - 7, donde 0 y 7 son domingo)
| | | ------- Mes (1 - 12)
| | --------- Día del mes (1 - 31)
| ----------- Hora (0 - 23)
------------- Minuto (0 - 59)

Por ejemplo, para ejecutar un script de respaldo cada día a las 2:30 AM:

30 2 * * * /home/user/backup.sh

Gestión de CRON

  • Para editar el crontab del usuario actual:crontab -e
  • Para listar los trabajos programados:crontab -l
  • Para eliminar todos los trabajos:crontab -r

2. AT: Tareas de una sola ejecución

AT permite programar tareas para que se ejecuten una única vez en un momento específico. Es útil cuando se necesita automatizar un proceso sin repetirlo periódicamente.

Instalación de AT

En la mayoría de las distribuciones, AT no viene preinstalado. Se puede instalar con:

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

El demonio de AT debe estar en ejecución:

sudo systemctl start atd
sudo systemctl enable atd

Uso de AT

Para programar una tarea en AT:

echo "comando_a_ejecutar" | at HH:MM

Ejemplo: Para apagar el sistema a las 11 PM:

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

También podemos interactuar con AT en modo interactivo:

at 14:00
at> echo "Hola, mundo" > /home/user/saludo.txt
at> <Ctrl+D>

Para ver tareas pendientes:

atq

Para eliminar un trabajo en cola:

atrm <job_id>

3. SYSTEMD TIMER: Alternativa moderna

SYSTEMD TIMER es una alternativa más avanzada y flexible a CRON y AT. Permite programar tareas con mayor precisión y ofrece mejor integración con systemd.

Creación de un TIMER

Primero, creamos un servicio en /etc/systemd/system/backup.service:

[Unit]
Description=Respaldo automático

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

Luego, creamos el archivo del temporizador en /etc/systemd/system/backup.timer:

[Unit]
Description=Ejecutar el respaldo diariamente

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Activación del TIMER

sudo systemctl enable --now backup.timer

Para listar temporizadores activos:

systemctl list-timers

Comparación entre CRON, AT y SYSTEMD TIMER

CaracterísticaCRONATSYSTEMD TIMER
RepetitivoNo
Fácil de usarNo
Integración con systemdNoNo
PrecisiónMediaAltaAlta

Conclusión

Dependiendo de la necesidad, CRON, AT y SYSTEMD TIMER ofrecen distintas formas de programar tareas en Linux. CRON es ideal para tareas recurrentes, AT para ejecuciones únicas y SYSTEMD TIMER para un mayor control. ¡Explora cada herramienta y optimiza tu flujo de trabajo en Linux!

Comentarios 0

Deja una respuesta

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