🗣️ Crontab → Natural
Traduce expresiones cron de 5 o 6 campos (con segundos) a una descripción en lenguaje natural, con las próximas 5 ejecuciones.
Descripción en lenguaje natural
Próximas 5 ejecuciones
Ejemplos rápidos
🔗 Herramientas relacionadas
📖 Dónde se suele tropezar
Traduce una expresión cron a lenguaje llano. Entiende tanto la forma de cinco campos (minuto, hora, día del mes, mes, día de la semana) como la de seis con segundos delante. Poder leer la expresión es una cuestión aparte de si funcionará una vez escrita en un crontab: el formato del archivo crontab tiene manías propias que nada tienen que ver con la expresión, y son al menos igual de habituales como causa de atasco. Para el significado y las próximas ejecuciones, mira el analizador de expresiones cron.
| Caso | Qué ocurre | Qué hacer |
|---|---|---|
Un % en el comando rompe el trabajo |
En un crontab, % significa salto de línea. Todo lo anterior al primer % es el comando y todo lo posterior se le pasa por la entrada estándar. Así, date +%Y%m%d ejecuta en realidad date + y le entrega el resto como entrada. Todo el mundo cae aquí una vez, casi siempre al intentar poner la fecha en el nombre de un log. |
Escapa todos los % con una barra invertida: date +\%Y\%m\%d. Vale igual para formatos de printf y para cualquier comando con codificación porcentual. Cuando el escapado vuelva ilegible la línea, saca el trabajo a un script de shell y que el crontab sólo lo invoque: dentro del script, % es un carácter normal. |
| Sólo la última línea no se ejecuta | Un archivo crontab debe terminar en un salto de línea. Sin él, algunas implementaciones se saltan la última línea sin más. Editar con crontab -e te lo pone solo, pero si canalizas un archivo con crontab < file o lo escribes desde un script de despliegue, es cosa tuya. Ni errores ni avisos, lo que hace muy difícil rastrear el fallo. |
Añade printf "\n" al final de tu generador, o léelo de vuelta con crontab -l y cuenta las líneas. Ten en cuenta además que los archivos en /etc/cron.d/ usan otro formato: llevan un campo extra con el usuario tras los campos de tiempo (0 3 * * * root /path/to/job). Si olvidas el usuario, cron intenta ejecutar el nombre de usuario como comando. |
| La siguiente ejecución empieza antes de acabar la anterior | Cron no comprueba nunca si la ejecución anterior terminó. Prográmalo cada cinco minutos y deja que el trabajo crezca a siete, y siempre habrá dos o más copias corriendo, con un solapamiento que se agrava según crecen los datos. Contención de bloqueos en la base de datos, dos escritores sobre el mismo archivo y superar el límite de una API externa llegan por aquí. Se rompe de golpe un día cualquiera al crecer el volumen, y por eso cuesta atribuirlo. | Toma un bloqueo exclusivo con flock: * * * * * /usr/bin/flock -n /tmp/myjob.lock /path/to/job sale de inmediato mientras la ejecución anterior tenga el bloqueo, gracias a -n (usa -w segundos si prefieres esperar). Junto a eso, registra la duración del trabajo y monitorízala: pasar del 50 % del intervalo es la señal para replantear el diseño. |
La forma de seis campos con segundos no es cron estándar. Quartz, node-cron y el @Scheduled de Spring extendieron la sintaxis cada uno por su cuenta, y un crontab de Linux la rechazará. Esta página lee ambas, pero si la acepta lo que vaya a ejecutarla es una pregunta para la documentación de esa implementación. Atajos como @daily o @reboot son la incompatibilidad en sentido contrario: válidos en un crontab, desconocidos para muchas bibliotecas. Da por hecho que la misma expresión puede significar cosas distintas en ejecutores distintos.
📖 Cómo usar
-
1
Ingresar expresión cronPega o escribe una expresión cron de 5 o 6 campos.
-
2
Leer la descripciónLa descripción y las próximas 5 ejecuciones aparecen al instante.
-
3
Probar ejemplos rápidosHaz clic en cualquier ejemplo para cargarlo de inmediato.
❓ Preguntas frecuentes
¿Cuál es la diferencia entre cron de 5 y 6 campos?
¿En qué se diferencia del visualizador Cron?
¿Puedo usar alias como @daily?
🐛 ¿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.