Patrones rápidos:
Cada minuto Cada hora Cada día a medianoche Días laborables 9am Cada domingo 1° de cada mes Cada 15 min Diario 2am Vie 6:30pm

¿Qué es una expresión cron?

Una expresión cron es una cadena de cinco campos separados por espacios que define un horario para tareas automatizadas (cron jobs). Originaria de Unix/Linux, cron se usa ampliamente en programadores en la nube (AWS EventBridge, GitHub Actions, Kubernetes CronJobs, Heroku Scheduler) y frameworks de aplicaciones.

Los cinco campos representan: minuto (0–59), hora (0–23), día del mes (1–31), mes (1–12) y día de la semana (0–7, donde tanto 0 como 7 = domingo).

Referencia de sintaxis cron

Cada campo admite estos caracteres especiales:

  • * — Cualquier valor (comodín). Ejemplo: * * * * * se ejecuta cada minuto.
  • , — Separador de lista. Ejemplo: 1,3,5 en el campo de hora significa 1am, 3am y 5am.
  • - — Rango. Ejemplo: 1-5 en el campo de día de la semana significa de lunes a viernes.
  • / — Paso. Ejemplo: */5 en el campo de minutos significa cada 5 minutos.

Cómo usar esta herramienta

Escriba o pegue su expresión cron en el campo de entrada de arriba. La herramienta explicará instantáneamente cada campo en lenguaje sencillo, mostrará el horario completo legible y los próximos 5 tiempos de ejecución basados en la fecha y hora actuales. Use los botones de patrones rápidos para insertar expresiones comunes.

Ejemplos comunes de expresiones cron

  • * * * * * — Cada minuto
  • 0 * * * * — Al inicio de cada hora
  • 0 0 * * * — Cada día a medianoche
  • 0 9 * * 1-5 — Cada día laborable a las 9:00 AM
  • 0 0 1 * * — A medianoche el primer día de cada mes
  • */15 * * * * — Cada 15 minutos
  • 0 2 * * 0 — Cada domingo a las 2:00 AM (común para respaldos semanales)
  • 0 8,12,17 * * 1-5 — Tres veces al día en días laborables (8am, mediodía, 5pm)

Cron en Infraestructura Moderna: Más Allá de lo Básico

Mientras el demonio cron tradicional de Unix sigue siendo ampliamente utilizado, la infraestructura moderna ha evolucionado la programación cron hacia sistemas más sofisticados. Comprender tanto los enfoques tradicionales como los modernos te ayuda a elegir la herramienta correcta para tu carga de trabajo.

Cron Tradicional vs Programadores Modernos

  • Unix Cron: Simple, confiable, se ejecuta en un solo servidor. Mejor para tareas recurrentes básicas como rotación de logs, copias de seguridad y scripts de limpieza. Limitaciones: sin lógica de reintento, sin coordinación distribuida, sin monitoreo.
  • Kubernetes CronJobs: Ejecuta contenedores programados en un clúster. Soporta políticas de concurrencia (Allow, Forbid, Replace), limpieza automática de jobs completados e integración con monitoreo de Kubernetes.
  • Programadores Cloud: AWS EventBridge, Google Cloud Scheduler y Azure Logic Apps proporcionan cron gestionado con reintentos integrados, colas de mensajes muertos y control de acceso basado en IAM.
  • Colas de Trabajo: Sistemas como Celery Beat (Python), Bull (Node.js) o Sidekiq-Cron (Ruby) combinan programación con pools de workers, proporcionando control de concurrencia, lógica de reintento y priorización de jobs.

Trampas y Mejores Prácticas de Expresiones Cron

  • Conciencia de Zona Horaria: Cron se ejecuta en la zona horaria del sistema por defecto. Cuando los servidores abarcan múltiples zonas horarias, siempre especifica UTC explícitamente y convierte en tu lógica de aplicación.
  • Ejecuciones Superpuestas: Si un job tarda más que el intervalo entre ejecuciones, puedes tener ejecuciones superpuestas. Usa bloqueos de archivo (flock), bloqueos de base de datos o la política de concurrencia de tu programador para prevenir esto.
  • Horario de Verano: Los jobs programados entre 2:00–3:00 AM pueden ejecutarse dos veces o no ejecutarse durante transiciones de horario de verano. Programa jobs críticos fuera de esta ventana o usa UTC.
  • La Cadena Especial @reboot: Usa @reboot para ejecutar un comando una vez cuando el demonio cron inicia (típicamente al arrancar el sistema). Útil para iniciar servicios en segundo plano sin systemd.

Preguntas frecuentes sobre cron

¿Qué significa '* * * * *' en cron?

La expresión * * * * * significa "ejecutar cada minuto de cada hora de cada día." Cada asterisco es un comodín que coincide con todos los valores válidos para su posición: minuto (0–59), hora (0–23), día del mes (1–31), mes (1–12) y día de la semana (0–7). Es la expresión cron más permisiva y se usa comúnmente para tareas que deben ejecutarse con frecuencia.

¿Cómo ejecuto un cron job cada 5 minutos?

Use la sintaxis de paso con una barra: */5 * * * *. El / significa "cada N", así que */5 en el campo de minutos significa cada 5 minutos — en :00, :05, :10, :15, y así sucesivamente. Para cada 15 minutos use */15 * * * *. Para minutos específicos como 0 y 30 de cada hora, use 0,30 * * * * (lista separada por comas).

¿Cuál es la diferencia entre día de la semana 0 y 7 en cron?

Tanto 0 como 7 representan el domingo. La convención tradicional de Unix usa 0 para el domingo hasta 6 para el sábado, pero muchas implementaciones de cron también aceptan 7 como domingo por compatibilidad. Los días 1–5 son de lunes a viernes, y 6 es el sábado. Para programar solo en días laborables, use 1-5 en la posición de día de la semana: 0 9 * * 1-5 se ejecuta a las 9 AM de lunes a viernes.

¿Cron admite programación a nivel de segundos?

El cron estándar de Unix no admite programación por debajo del minuto — la unidad más pequeña es un minuto. Si necesita precisión a nivel de segundos, considere usar herramientas del sistema como systemd timers (Linux), Task Scheduler (Windows), o programadores a nivel de aplicación como node-cron, APScheduler (Python) o Quartz (Java) que admiten expresiones de 6 campos incluyendo segundos.

Herramientas relacionadas para desarrolladores