CronAutomatizaciónTareas6 min de lectura

Programar tareas con Cron

Programá tareas automáticas con Cron para ejecutar scripts y comandos en horarios definidos.


Cron es el programador de tareas de Linux. Te permite ejecutar scripts y comandos automáticamente en horarios definidos.

Sintaxis de Cron

terminal
┌───────────── minuto (0-59)
│ ┌───────────── hora (0-23)
│ │ ┌───────────── día del mes (1-31)
│ │ │ ┌───────────── mes (1-12)
│ │ │ │ ┌───────────── día de la semana (0-7, 0 y 7 = domingo)
│ │ │ │ │
* * * * * comando

Paso 1 — Editar el crontab

bash
crontab -e

La primera vez te pide elegir editor. Seleccioná nano (opción 1).

Paso 2 — Ejemplos comunes

bash
# Cada 5 minutos
*/5 * * * * /home/deploy/scripts/check-health.sh

# Todos los días a las 3:00 AM
0 3 * * * /home/deploy/scripts/backup.sh

# Cada lunes a las 9:00 AM
0 9 * * 1 /home/deploy/scripts/weekly-report.sh

# Primer día de cada mes a medianoche
0 0 1 * * /home/deploy/scripts/monthly-cleanup.sh

# Cada hora
0 * * * * /usr/bin/curl -s https://miapp.com/api/cron/hourly

Paso 3 — Listar tareas programadas

bash
crontab -l

Paso 4 — Redirigir salida a un log

bash
0 3 * * * /home/deploy/scripts/backup.sh >> /var/log/backup.log 2>&1

Paso 5 — Variables de entorno en Cron

Cron no carga tu perfil. Definí variables al inicio del crontab:

bash
PATH=/usr/local/bin:/usr/bin:/bin
HOME=/home/deploy

0 3 * * * $HOME/scripts/backup.sh

Cron del sistema

Para tareas que requieren root:

bash
sudo crontab -e

O usá los directorios predefinidos:

bash
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/

Depurar problemas con Cron

bash
# Ver logs de cron
sudo grep CRON /var/log/syslog

# Verificar que el servicio está activo
sudo systemctl status cron

Herramienta útil

Usá crontab.guru para validar expresiones cron antes de agregarlas.


¿Te resultó útil esta guía?