Cron
Pega una expresión cron y obtén descripción, próximas 10 ejecuciones y significado de cada campo. Plantillas comunes incluidas.
📖 Sintaxis de cron
- •
*— cualquier valor - •
5,10,15— lista - •
1-5— rango - •
*/15— paso (cada 15) - •
@hourly @daily @weekly @monthly @yearly— alias
📖 Dónde se suele tropezar
Pega una expresión cron y esta página la explica en palabras y calcula las diez próximas ejecuciones. Los cálculos usan la zona horaria de tu navegador, no la del servidor que ejecutará el trabajo. Y que la expresión sea válida es una cuestión aparte de si el trabajo llega a ejecutarse: nada de esto te dice si el demonio cron está vivo ni si el usuario que ejecuta tiene los permisos y el PATH correctos.
| Caso | Qué ocurre | Qué hacer |
|---|---|---|
| Especificar día del mes y día de la semana | Cuando ninguno de los dos campos es *, se combinan con OR, no con AND. 0 0 1 * 1 no significa el día 1 y que sea lunes, sino el día 1 o cualquier lunes, con unas cinco ejecuciones al mes. Este comportamiento heredado de Vixie cron es contraintuitivo y una fuente clásica de incidentes. |
Deja siempre uno de los dos como *. Si de verdad necesitas el AND —el día 1 sólo cuando cae en lunes—, programa la tarea a diario y comprueba la fecha al principio del script para salir pronto. |
Usar */n fuera del campo de minutos |
*/n significa valores divisibles por n, no cada n horas. 0 */5 * * * se ejecuta a las 00, 05, 10, 15 y 20, y el salto de las 20:00 a las 00:00 siguientes es de cuatro horas, porque 24 no es divisible entre 5. El mismo salto ocurre a fin de mes en el campo del día. |
Para un intervalo uniforme, enumera los valores: 0 0,6,12,18 * * * para cada seis horas. En el campo de minutos */5 sí es uniforme, porque 60 se divide entre 5, 10, 15, 20 y 30. Para limitar el horario laboral sirve un rango: 0 9-18 * * 1-5. |
| Funciona a mano pero no bajo cron | El entorno que da cron no se parece a una shell de login. PATH es poco más que /usr/bin:/bin, no se lee .bashrc y nada inicializa nvm ni rbenv. Peor aún: stdout y stderr no van a ninguna parte si no hay correo configurado, así que el fallo es invisible. |
Usa rutas absolutas en cada comando —lo que imprimió which node—, declara PATH= y CRON_TZ=Europe/Madrid al principio del crontab y añade >> /var/log/myjob.log 2>&1. Para depurar, programa * * * * * env > /tmp/cronenv durante un minuto y lee exactamente qué entorno entrega cron. |
Este analizador cubre el cron estándar de cinco campos: minuto, hora, día del mes, mes y día de la semana. La forma de seis campos con segundos al principio es una extensión propia de Quartz, node-cron o el @Scheduled de Spring, y un crontab de Linux la rechazará. A la inversa, atajos como @daily o @reboot funcionan en crontab pero muchas bibliotecas no los entienden. Comprueba la documentación de lo que vaya a ejecutarlo de verdad.
📖 Cómo usar
-
1
5 campos: min hora día mes dowDe izq. a der.: min, hora, día mes, día-semana
-
2
Especiales: * / , -* = todos, */N = cada N, A,B = A o B, A-B = A a B
-
3
Verifica horariosRevisa "próximas 10" antes de desplegar
❓ Preguntas frecuentes
¿Soporta 6 campos?
¿Para expresiones complejas?
¿Zona horaria?
🔗 Herramientas relacionadas
🐛 ¿Encontró un problema con esta herramienta?
Gratis, sin registro. Incluso solo los pasos para reproducir ayudan. Los informes van directamente al operador y se usan para corregir.
¡Gracias por tu reporte!
Tu reporte llegó al operador y se usará para mejorar.