Generador de Expresiones Cron
Construye un horario crontab con menús desplegables — minuto, hora, día, mes, día de la semana — con una lectura en texto claro y plantillas habituales.
1.012 visitas
Cómo Funciona
Una expresión cron programa una tarea recurrente usando cinco campos separados por espacios, siempre en el mismo orden: minuto · hora · día del mes · mes · día de la semana. Cada campo acepta un valor o uno de cuatro caracteres especiales: * significa "cada valor posible"; */15 significa "cada 15 unidades, empezando desde el mínimo del campo"; 1,15,30 es una lista explícita; 1-5 es un rango inclusivo. Leído de izquierda a derecha, 0 9 * * 1-5 significa "en el minuto 0 de la hora 9, cualquier día del mes, cualquier mes, en los días de la semana del 1 al 5" — es decir, las 9:00 de la mañana de lunes a viernes. */10 * * * * se dispara cada 10 minutos durante todo el día, y 0 0 1 * * se dispara a medianoche el día 1 de cada mes.
Construye un horario con los menús desplegables y esta herramienta ensambla los cinco campos, y luego traduce el resultado a una frase en lenguaje sencillo para que puedas comprobarlo antes de pegarlo en un archivo crontab o en un planificador en la nube. Las plantillas habituales — cada minuto, cada hora, diariamente a una hora determinada, solo días laborables — están a un clic de distancia para los horarios a los que más se recurre.
Lo Que Deberías Saber
La mayor sorpresa en la semántica de cron: cuando ambos el día del mes y el día de la semana están restringidos (ninguno se deja como *), los dos se combinan con OR, no con AND. Así que 0 0 15 * 5 no significa "el día 15, si cae en viernes" — significa "el día 15 del mes, O cada viernes", lo que se dispara mucho más a menudo de lo que la mayoría pretende. Si solo importa uno de los dos, deja el otro como *.
La numeración del día de la semana también puede sorprender: tanto 0 como 7 significan domingo en la mayoría de las implementaciones de cron, con el lunes como 1. Y algo crucial: cron siempre se ejecuta en la zona horaria configurada del servidor —habitualmente UTC en la infraestructura en la nube— no en la zona horaria local de quien configuró el horario, así que una tarea programada para las "9 AM" puede dispararse en una hora local distinta de la esperada hasta que se confirme la zona horaria del host. Planificadores en la nube como el schedule: de GitHub Actions, AWS EventBridge y el CronJob de Kubernetes usan todos esta misma sintaxis de cinco campos como base, a veces con extensiones propias de cada proveedor (un campo opcional de segundos, un atajo con el nombre del día), así que un horario construido aquí se traslada casi directamente a esas plataformas con una traducción mínima.
Preguntas Frecuentes
¿Cómo ejecuto algo cada 30 segundos?
La unidad más pequeña del cron clásico es el minuto. La solución habitual es usar dos entradas: una normal y otra con `sleep 30 &&` antes del comando — o usar temporizadores systemd, que sí admiten segundos.
¿Por qué mi tarea de las 9:00 se ejecutó a una hora rara?
Casi siempre es la zona horaria: crontab se ejecuta en la hora local del servidor (a menudo UTC en máquinas en la nube). Compruébalo con `date` en el host, o configura CRON_TZ si está disponible.
¿Cómo pruebo una expresión de forma segura?
Apúntala primero a un comando de registro: `* * * * * date >> /tmp/cron-test.log`, confirma el ritmo, y luego sustituye por el comando real. Comprueba también que el usuario de crontab tenga el PATH necesario — el entorno de cron es mínimo.
¿Qué ocurre cuando el día del mes y el día de la semana están ambos configurados?
Se combinan con OR, no con AND — un horario como `0 0 15 * 5` se ejecuta el día 15 del mes Y cada viernes, no solo un viernes que casualmente caiga en día 15. Cron por sí solo no puede expresar una intersección de ambas condiciones; esa comprobación debe hacerse dentro de la propia tarea.
¿Tiene cron en cuenta el horario de verano?
Depende de la implementación, pero el cron clásico generalmente sigue la hora local del reloj del sistema, incluidos los cambios de horario de verano — lo que significa que una tarea programada durante la hora del cambio de "adelanto" o "atraso" puede ejecutarse cero o dos veces ese día. Los servidores configurados en UTC evitan esto por completo, una razón más por la que la mayoría de los planificadores en producción lo usan por defecto.
¿Puedo combinar un rango y un paso en el mismo campo, por ejemplo para días laborables alternos?
Sí — un paso se puede aplicar a un rango y no solo a un asterisco: `1-5/2` en el campo del día de la semana significa "cada dos días dentro del rango lunes-viernes", es decir, lunes, miércoles y viernes. Esta forma combinada de rango y paso es compatible con la mayoría de las implementaciones modernas de cron (incluidas Vixie cron y systemd), aunque no con las implementaciones POSIX más antiguas, así que pruébala una vez antes de confiar en ella en un entorno heredado.
Herramientas Similares
Reportar un Problema
Generador de Expresiones Cron
Comentarios
Aún no hay comentarios — ¡sé el primero en escribir uno!