Cómo usarla
- Escribe o pega una expresión cron, o elige uno de los horarios habituales.
- Consulta el significado en lenguaje sencillo. Si hay campos no válidos, se indican junto con el motivo.
- Consulta las próximas 10 ejecuciones en tu zona horaria local. Cambia a UTC si tu servidor usa esa zona horaria.
- Copia las horas de ejecución para compartirlas o ajusta la expresión hasta obtener el horario que necesitas.
Cómo funciona
Una expresión cron estándar, como la que usan crontab en Linux (Vixie cron y cronie) y muchos programadores de CI y servicios de alojamiento, tiene cinco campos separados por espacios: minuto (0–59), hora (0–23), día del mes (1–31), mes (1–12 o JAN–DEC) y día de la semana (0–7 o SUN–SAT, donde tanto 0 como 7 significan domingo). Cada campo acepta * para indicar todos los valores, un valor único, un rango como 1-5, una lista como 1,15,30 y un intervalo como */15 (cada 15 valores) o 9-17/2 (cada dos horas, de 9 a 17). Los nombres no distinguen entre mayúsculas y minúsculas. Los atajos @yearly (o @annually), @monthly, @weekly, @daily (o @midnight) y @hourly equivalen a 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * y 0 * * * *.
Los campos de día del mes y día de la semana siguen una regla que sorprende a muchas personas. Si uno de los campos empieza por *, el día debe cumplir ambos campos. Si ambos campos están restringidos, el día coincide cuando cumple cualquiera de los dos: 0 0 13 * 5 se ejecuta el día 13 de cada mes y también todos los viernes, no solo los viernes 13. Como se comprueba si el campo empieza por *, un intervalo como */2 también se considera sin restricciones. Este comportamiento coincide con Vixie cron y cronie; algunos otros programadores funcionan de manera distinta.
Las próximas ejecuciones se calculan según la zona horaria de tu navegador o en UTC, que es la que usan la mayoría de los servidores y programadores en la nube. Cron usa la zona horaria de la máquina en la que se ejecuta. El comportamiento de los daemons de cron reales varía durante los cambios de horario de verano: esta herramienta omite las horas locales que no existen cuando el reloj se adelanta y muestra una sola vez las horas repetidas. No se admiten sintaxis extendidas: expresiones Quartz de seis o siete campos con segundos o años, ni los caracteres especiales ?, L, W y #.
Ejemplos
Comprobación del estado durante el horario laboral
*/15 9-17 * * 1-5 significa cada 15 minutos entre las 09:00 y las 17:59, de lunes a viernes. La última ejecución de cada día es a las 17:45.
Copia de seguridad nocturna
30 2 * * * se ejecuta todos los días a las 02:30. Si el servidor usa UTC y estás en Nueva York, la lista de próximas ejecuciones en modo UTC muestra las horas que usará realmente el servidor.
La trampa de los campos de día
0 9 1 * 1 parece significar «a las 9:00 el primer día del mes si es lunes», pero se ejecuta a las 09:00 el día 1 de cada mes y también todos los lunes. Para ejecutarlo solo el primer lunes, programa 0 9 1-7 * * y comprueba el día de la semana en el script.
Preguntas frecuentes
¿Qué significa */5 en cron?
Significa cada quinto valor del campo, empezando por el valor más bajo. En el campo de minutos, */5 se ejecuta en los minutos 0, 5, 10 … 55. En el campo de horas, */5 se ejecuta a las 0, 5, 10, 15 y 20, así que el intervalo de las 20:00 a la medianoche es de cuatro horas, no de cinco.
¿Por qué mi tarea se ejecuta más días de lo esperado?
Cuando los campos de día del mes y día de la semana están restringidos, cron se ejecuta los días que coinciden con cualquiera de ellos. Por ejemplo, 0 0 15 * 1 se ejecuta el día 15 y todos los lunes. Establece uno de los dos campos en * para que solo se tenga en cuenta el otro.
¿Qué zona horaria usa cron?
La zona horaria del sistema del servidor que ejecuta el daemon de cron, a menos que crontab defina CRON_TZ o TZ (opción compatible con cronie). Los programadores en la nube suelen usar UTC de forma predeterminada. Usa el selector UTC para ver las horas que usaría un servidor en UTC.
¿Puedo usar segundos o un campo de año?
No en cron estándar, que tiene una resolución de un minuto y cinco campos. Los formatos de seis y siete campos con segundos y años corresponden a Quartz, Spring y bibliotecas similares, y esta herramienta no los admite.
¿El domingo es 0 o 7?
Ambos. En el campo de día de la semana, 0 y 7 significan domingo, 1 es lunes y 6 es sábado. También puedes escribir los nombres de tres letras, de SUN a SAT.
Privacidad
La expresión se analiza y las horas de ejecución se calculan en tu navegador. No se sube ni se almacena nada de lo que introduzcas, ni se incluye en los datos de analítica.