Qué es una expresión cron
cron es el planificador de tareas de los sistemas Unix y Linux: un demonio que ejecuta comandos de forma automática en los momentos que tú definas. Cada línea del archivo crontab empieza con una expresión cron, cinco valores separados por espacios que responden a una sola pregunta: ¿cuándo debe correr esta tarea?
El problema es que esos cinco números y símbolos no se leen a simple vista. 0 3 * * 0 no dice nada por sí solo hasta que lo traduces a “a las 3:00 de la madrugada, todos los domingos”. Esta herramienta hace exactamente esa traducción: pegas la expresión y obtienes una frase clara en español, además de las próximas fechas en que se ejecutaría. Todo ocurre en tu navegador; nada se envía a un servidor.
Los cinco campos
Una expresión cron estándar tiene cinco campos, siempre en este orden:
| Posición | Campo | Rango válido |
|---|---|---|
| 1 | Minuto | 0-59 |
| 2 | Hora | 0-23 |
| 3 | Día del mes | 1-31 |
| 4 | Mes | 1-12 |
| 5 | Día de la semana | 0-7 (0 y 7 = domingo) |
Se leen de izquierda a derecha, de la unidad de tiempo más pequeña a la más grande. La tarea se ejecuta cuando todos los campos coinciden con el momento actual, con una excepción: si defines a la vez día del mes y día de la semana, cron dispara cuando coincide cualquiera de los dos.
Sintaxis: los cuatro símbolos
*(asterisco): “cualquier valor”. En el campo de hora significa “todas las horas”.,(coma): una lista de valores.1,15,30en los minutos son tres momentos concretos.-(guion): un rango.1-5en el día de la semana es de lunes a viernes./(barra): un paso o intervalo.*/15en los minutos es “cada 15 minutos”; también funciona sobre un rango, como0-30/10.
Ejemplo resuelto
Tomemos */20 9-17 * * 1-5 campo por campo:
- Minuto
*/20→ los minutos 0, 20 y 40, es decir cada 20 minutos. - Hora
9-17→ de las 9 a las 17 (nueve horas en total). - Día del mes
*→ cualquier día. - Mes
*→ cualquier mes. - Día de la semana
1-5→ de lunes a viernes.
La traducción es: “Cada 20 minutos, entre las 9:00 y las 17:59, de lunes a viernes”. ¿Cuántas veces corre? Tres veces por hora multiplicado por nueve horas son 27 ejecuciones cada día laborable, y ninguna el fin de semana. Es un patrón típico para sincronizar datos solo en horario de oficina.
Ejemplos comunes
| Expresión | Significado |
|---|---|
* * * * * | Cada minuto |
*/15 * * * * | Cada 15 minutos |
0 * * * * | Cada hora en punto |
0 9 * * 1-5 | A las 9:00, de lunes a viernes |
0 0 1 * * | A las 0:00, el día 1 de cada mes |
30 3 * * 0 | A las 3:30, los domingos |
0 0 * * 6,0 | A medianoche los fines de semana |
Preguntas frecuentes
¿Qué significa el asterisco en cron?
El asterisco * quiere decir “todos los valores posibles de este campo”. Un * en la hora significa las 24 horas; en el mes, los 12 meses. Cuando los cinco campos son asteriscos (* * * * *), la tarea se ejecuta cada minuto sin parar.
¿Cada cuánto se ejecuta */5 * * * *?
Cada cinco minutos, las veinticuatro horas, todos los días: a los minutos 0, 5, 10, 15… hasta 55 de cada hora. Son 12 ejecuciones por hora y 288 al día. Cambia el 5 por el intervalo que quieras; recuerda que */7 no reparte de forma uniforme al final de la hora, porque 60 no es múltiplo de 7.
¿El domingo es 0 o 7?
Ambos. En el campo del día de la semana, tanto 0 como 7 representan el domingo; el lunes es 1 y el sábado es 6. Esta duplicidad existe por compatibilidad histórica entre distintas versiones de cron, así que usa el que te resulte más cómodo.
¿Por qué mi tarea corre en un horario distinto al esperado?
Casi siempre es la zona horaria: cron usa la hora local del servidor, que puede no ser la tuya. Esta herramienta calcula las próximas ejecuciones en la zona horaria de tu dispositivo, útil como referencia, pero verifica siempre la configuración del servidor donde corre el crontab.