Analizador de expresiones Cron

Las expresiones cron definen programaciones para tareas recurrentes en sistemas tipo Unix. Esta herramienta analiza la sintaxis cron (5-7 campos), explica cada campo en español sencillo, calcula las próximas ejecuciones programadas y advierte sobre errores comunes. Soporta tanto el formato de crontab de usuario como el formato de crontab del sistema con campos de usuario y comando.

Especificaciones

Casos de uso comunes

  • Depurar por qué un trabajo cron no se ejecuta en los momentos esperados
  • Comprender expresiones cron heredadas en la configuración
  • Planificar programaciones de respaldos y mantenimiento
  • Verificar programaciones de pipelines de CI/CD (GitHub Actions, GitLab CI)
  • Probar programaciones de CronJob de Kubernetes antes del despliegue
  • Analizar entradas de crontab del sistema de /etc/crontab o /etc/cron.d/

Funcionalidades

  • Analizar expresiones cron de 5 campos (estándar), 6 campos (con segundos) y 7 campos (con segundos y año)
  • Soporte para formato de crontab del sistema con campo de usuario (ej. "0 5 * * * root /path/to/script")
  • Extraer y mostrar el comando de las líneas cron
  • Explicar cada campo en lenguaje legible para humanos
  • Calcular las próximas 10 ejecuciones programadas
  • Soporte para rangos (1-5), listas (1,3,5), pasos (*/15) y nombres (MON, JAN)
  • Advertir sobre problemas comunes como especificar el día 31 en una programación

Ejemplos

Cada día laborable a las 9 AM

Pruébalo →

Se ejecuta a las 9:00 AM de lunes a viernes.

0 9 * * 1-5

Cada 15 minutos

Pruébalo →

Se ejecuta en los minutos 0, 15, 30 y 45 de cada hora.

*/15 * * * *

Crontab del sistema con usuario y comando

Pruébalo →

Respaldo diario a las 5 AM ejecutándose como usuario root (formato de crontab del sistema de /etc/crontab).

0 5 * * * root /usr/bin/backup.sh

Cron con comando (crontab de usuario)

Pruébalo →

Verificación de estado cada 5 minutos (formato de crontab de usuario).

*/5 * * * * curl -s http://localhost/health

Mensual el primero

Pruébalo →

Se ejecuta a medianoche el primer día de cada mes.

0 0 1 * *

Consejos

  • Los cinco campos son: minuto (0-59), hora (0-23), día del mes (1-31), mes (1-12), día de la semana (0-6, Domingo=0).
  • El crontab del sistema (/etc/crontab, /etc/cron.d/*) tiene un 6to campo para el nombre de usuario antes del comando.
  • Los crontabs de usuario (crontab -e) no tienen campo de nombre de usuario; se ejecutan como el propietario del crontab.
  • Use * para "cada" y */n para "cada enésimo".
  • Los nombres de días (SUN-SAT) y nombres de meses (JAN-DEC) no distinguen mayúsculas de minúsculas.
  • Tenga cuidado al combinar día del mes y día de la semana; el comportamiento varía entre implementaciones.

Comprender Analizador de expresiones Cron

Cron es el programador de tareas basado en tiempo en sistemas operativos tipo Unix, y las expresiones cron son la sintaxis compacta para definir cuándo se ejecuta una tarea. El formato estándar de cinco campos especifica minuto (0-59), hora (0-23), día del mes (1-31), mes (1-12) y día de la semana (0-6, donde 0 es Domingo). Un asterisco (*) coincide con todos los valores, haciendo que "* * * * *" se ejecute cada minuto.

Más allá de valores simples, cron soporta varios operadores. Los rangos (1-5) coinciden con un intervalo contiguo. Las listas (1,3,5) coinciden con valores discretos. Los valores de paso (*/15) crean intervalos regulares. Estos se combinan: 1-5/2 en día de la semana significa lunes, miércoles, viernes. Los campos de mes y día de la semana aceptan nombres de tres letras (JAN-DEC, SUN-SAT).

Las implementaciones de cron varían. Los crontabs de usuario tienen cinco campos más el comando. Los crontabs del sistema agregan un campo de nombre de usuario. Algunas implementaciones soportan un sexto campo para segundos (Spring, Quartz, Kubernetes) y un séptimo para el año. AWS EventBridge, GitHub Actions y otros programadores en la nube tienen cada uno sus propias variaciones.

Los problemas comunes incluyen la interacción entre los campos de día del mes y día de la semana: si ambos están especificados (no *), la tarea se ejecuta cuando cualquiera de las condiciones es verdadera (lógica OR). El manejo de zonas horarias es otro problema — las tareas cron se ejecutan en la zona horaria del sistema a menos que se configure CRON_TZ, y las transiciones de horario de verano pueden causar que las tareas se omitan o se ejecuten dos veces.

El operador / crea valores de paso. */5 en el campo de minutos significa "cada 5to minuto" y produce ejecuciones en los minutos 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 y 55 de la hora. Los rangos se pueden combinar con pasos: 10-30/5 significa cada 5 minutos entre el minuto 10 y el minuto 30. Para ejecutar una tarea a una hora específica en días específicos, establezca los campos de minuto y hora al tiempo deseado y el campo de día de la semana a los días objetivo. Por ejemplo, "30 14 * * 1-5" se ejecuta a las 2:30 PM de lunes a viernes, y "0 9 * * 0" se ejecuta a las 9 AM cada domingo. Todos los tiempos se interpretan en la zona horaria local del servidor a menos que CRON_TZ esté explícitamente configurado.

Cron usa la hora del reloj de pared, lo que significa que las transiciones de horario de verano pueden causar comportamiento inesperado. Cuando los relojes adelantan, las tareas programadas entre las 2:00 y las 2:59 AM pueden omitirse por completo. Cuando los relojes atrasan, las tareas en esa ventana pueden ejecutarse dos veces. Para tareas críticas, configurar CRON_TZ=UTC evita estos problemas. Alternativamente, evite programar tareas durante la ventana de transición, o diseñe las tareas para que sean idempotentes para que las ejecuciones duplicadas sean inofensivas.

La sintaxis cron ha sido adoptada mucho más allá de los sistemas Unix. CronJobs de Kubernetes, GitHub Actions, GitLab CI, AWS EventBridge, Google Cloud Scheduler, Spring @Scheduled y muchas bibliotecas de colas de tareas usan expresiones cron para programación. Sin embargo, cada implementación puede soportar diferentes características — algunas agregan un campo de segundos, algunas agregan un campo de año, y algunas usan ? para significar "sin valor específico" en los campos de día del mes o día de la semana.

← Volver a todas las herramientas