Guia de expresiones cron: sintaxis, ejemplos y generador visual gratis

9 min de lectura

Aprende la sintaxis de cron jobs paso a paso. Ejemplos comunes, generador visual online y como programar tareas automaticas en Linux y servidores.

Que es una expresion cron y para que sirve

Un cron job es una tarea programada que se ejecuta automaticamente en un horario definido en sistemas Unix/Linux. La expresion cron es la sintaxis que define CUANDO se ejecuta.

Formato: * * * * * (5 campos separados por espacios)

minuto hora dia-del-mes mes dia-de-la-semana

Ejemplos rapidos:

  • 0 9 * * * → Cada dia a las 9:00 AM
  • */15 * * * * → Cada 15 minutos
  • 0 0 * * 0 → Cada domingo a medianoche
  • 0 0 1 * * → Primer dia de cada mes a medianoche

Genera expresiones cron visualmente con el generador de cron de NexTools.

La sintaxis cron explicada campo por campo

CampoValoresCaracteres especiales
Minuto0-59* , - /
Hora0-23* , - /
Dia del mes1-31* , - /
Mes1-12 (o JAN-DEC)* , - /
Dia de semana0-7 (0 y 7 = domingo) o SUN-SAT* , - /

Caracteres especiales:

  • * = cualquier valor ("todos")
  • , = lista de valores (1,3,5 = lunes, miercoles, viernes)
  • - = rango (1-5 = lunes a viernes)
  • / = incremento (*/10 = cada 10 unidades)

Ejemplos de expresiones cron comunes

ExpresionSignificado
0 * * * *Cada hora en punto
*/5 * * * *Cada 5 minutos
0 9 * * 1-5Lunes a viernes a las 9 AM
0 0 * * *Cada dia a medianoche
0 0 * * 0Cada domingo a medianoche
0 6,18 * * *A las 6 AM y 6 PM cada dia
0 0 1 * *Primer dia de cada mes
0 0 1 1 *1 de enero a medianoche (anual)
30 2 * * 1Cada lunes a las 2:30 AM
0 9-17 * * 1-5Cada hora de 9 AM a 5 PM, lun-vie

Si necesitas convertir estas horas entre zonas horarias, usa el conversor de zonas horarias de NexTools.

Como usar el generador de cron de NexTools

El generador de cron de NexTools:

Paso 1: Selecciona la frecuencia deseada con los controles visuales.

Paso 2: Ve la expresion cron generada automaticamente.

Paso 3: Ve una descripcion legible de cuando se ejecutara ("Cada lunes a las 9:00 AM").

Paso 4: Copia la expresion para usarla en crontab, CI/CD o tu servidor.

Tambien puedes pegar una expresion cron existente y el generador te muestra su significado en lenguaje natural.

Cron en la practica: crontab, CI/CD y cloud

Linux crontab:

crontab -e → edita tu crontab personal.

0 9 * * * /usr/bin/python3 /home/user/backup.py → ejecuta backup.py cada dia a las 9 AM.

Vercel: En vercel.json:

{ "crons": [{ "path": "/api/daily-task", "schedule": "0 9 * * *" }] }

GitHub Actions:

on:
  schedule:
    - cron: '0 9 * * 1-5'

AWS CloudWatch: Usa expresiones cron pero con 6 campos (agrega segundos o ano).

Importante: Los cron jobs en servidores usan la zona horaria del servidor (generalmente UTC). Usa la herramienta de zonas horarias para calcular la hora UTC correcta.

Errores comunes con cron jobs

1. Zona horaria incorrecta. Tu servidor esta en UTC pero escribes la hora en tu zona local. Un cron a "0 9 * * *" en UTC es las 4 AM en Mexico (UTC-5). Solución: calcula la hora UTC antes de escribir el cron.

2. Horario de verano (DST). Un cron a las 2:30 AM puede ejecutarse 0 o 2 veces el dia del cambio de horario. Solucion: usa UTC para evitar ambiguedad.

3. No redirigir output. Sin > /dev/null 2>&1, el output del cron se envia como email al usuario del sistema. Si el email no esta configurado, se acumula silenciosamente.

4. Path incorrecto. Cron no carga el PATH normal del usuario. Usa rutas absolutas: /usr/bin/python3 no solo python3.

5. Permisos. El script debe ser ejecutable (chmod +x script.sh) y el usuario de cron debe tener permisos.

Alternativas modernas a cron

systemd timers (Linux): Reemplazo moderno de cron en sistemas con systemd. Mas flexible (puede depender de otros servicios, reintentar en fallo).

Vercel Cron Jobs: Ejecuta funciones serverless en schedule. Sin servidor propio.

GitHub Actions scheduled: Ejecuta workflows en schedule. Gratuito para repos publicos.

Cloud Scheduler (GCP), EventBridge (AWS), Logic Apps (Azure): Servicios cloud de scheduling con integraciones nativas.

BullMQ (Node.js): Cola de trabajos con scheduling basado en cron. Para aplicaciones que necesitan mas control que un cron basico.

Cron con 6 o 7 campos: variantes no-estandar

Algunos sistemas extienden la sintaxis estandar de 5 campos:

6 campos (segundos): seg min hora dia mes dia-sem. Usado en Spring Boot, Quartz (Java). 0 0 9 * * * = cada dia a las 9:00:00.

7 campos (ano): seg min hora dia mes dia-sem ano. Usado en AWS CloudWatch.

@keywords (crontab):

  • @yearly = 0 0 1 1 *
  • @monthly = 0 0 1 * *
  • @weekly = 0 0 * * 0
  • @daily = 0 0 * * *
  • @hourly = 0 * * * *
  • @reboot = ejecutar al iniciar el sistema

El generador de NexTools soporta la sintaxis estandar de 5 campos, la mas universal.

Prueba esta herramienta:

Abrir herramienta

Preguntas frecuentes

Que significa */5 en una expresion cron

El / indica incremento. */5 en el campo de minutos significa 'cada 5 minutos' (0, 5, 10, 15...). */15 seria cada 15 minutos. */2 cada 2 unidades del campo donde este.

Como ejecuto un cron job cada 30 segundos

Cron estandar no soporta intervalos menores a 1 minuto. Opciones: (1) Ejecutar cada minuto con sleep: '* * * * * command && sleep 30 && command'. (2) Usar systemd timer con OnUnitActiveSec=30s. (3) Usar un loop en el script con sleep.

En que zona horaria se ejecutan los cron jobs

En la zona horaria del servidor, generalmente UTC. Verifica con 'date' en el servidor. Para evitar confusiones con DST, configura crons en UTC y calcula mentalmente la hora local.

Como debuggeo un cron job que no se ejecuta

Verifica: (1) que el script funciona manualmente, (2) rutas absolutas en el cron, (3) permisos del script, (4) que el servicio cron esta activo ('systemctl status cron'), (5) logs de cron (/var/log/syslog o /var/log/cron), (6) redirige output a un archivo para ver errores.

Puedo usar nombres de meses y dias en cron

Si. En el campo de mes: JAN-DEC. En dia de semana: SUN-SAT (o MON-FRI). '0 9 * * MON-FRI' = lunes a viernes a las 9. No todos los sistemas soportan nombres; los numeros son mas universales.

Que pasa si un cron job tarda mas de lo esperado y se superpone con la siguiente ejecucion

Cron NO espera a que termine la ejecucion anterior. Si un job de 2 minutos esta programado cada minuto, tendras 2 instancias corriendo simultaneamente. Solucion: usa un lock file (flock) para evitar ejecuciones superpuestas.