Cron una vez al mes
Es 0 0 1 * *: el día 1, a medianoche.
Los ejemplos sustituyen temporalmente la entrada y los ajustes. Puedes recuperar tu trabajo anterior.
- cron
- • • • • •
• • • • •
•••••••••• •••••• ••••••
• •••••••• •••• ••••••
• • •••••• ••• ••• ••• ••••••
• • • •••• ••• ••••••
• • • • •• ••• •• •• •••••• ••••• •• ••••••• •• •• • • •• •• ••••••• •• •••••••••
• • • • •
•• ••••••• •••
•••••• •
•••• •
••• ••• ••• •
••• •••••
••• •• •• •••••• •••••
•••••••• ••••• ••••••••••• ••••• •• •••••••••••••••
•••••••••• ••••• •••
•••••••••• ••••• •••
•••••••••• ••••• •••
•••••••••• ••••• •••
•••••••••• ••••• •••Tus archivos se quedan en tu dispositivo
Esta herramienta se ejecuta por completo en tu navegador. Lo que pegas se procesa en tu dispositivo y nunca se envía a un servidor, así que puedes usarla con tokens, claves y textos sin publicar.
Ejemplo
Ejemplo: un informe de cierre el día 1 de cada mes a las 6:00
Una tienda online genera cada mes el informe de ventas del mes anterior. A medianoche todavía entran pedidos, así que mejor a las 6:00. Pon el menú en «Describirla abajo en su lugar» y escribe, en inglés: at 6am on the 1st.
- El constructor escribe 0 6 1 * *: minuto 0, hora 6, día del mes 1, todos los meses, cualquier día de la semana.
- Debajo se relee campo por campo (hora 6, día del mes 1), y se listan las cinco próximas ejecuciones en la zona horaria de tu navegador, todas un día 1 a las 06:00.
- Pégala en el crontab delante del comando: 0 6 1 * * /usr/local/bin/informe.sh
| Lo que eliges o escribes | Expresión | Qué hace |
|---|---|---|
| Menú: «El 1 de cada mes» | 0 0 1 * * | el día 1 a las 00:00 |
| at 6am on the 1st | 0 6 1 * * | el día 1 a las 06:00 |
| at 8:30 on the 1st and 15th | 30 8 1,15 * * | los días 1 y 15 a las 08:30 |
| on the 31st at midnight | 0 0 31 * * | solo en los 7 meses que tienen 31 días |
| el día 1 a las 6 | (ninguna) | no se lee: el campo solo entiende inglés |
| at 7am on the first monday of the month | (ninguna) | cron no puede expresarlo; la página explica la alternativa |
0 6 1 * *: doce ejecuciones al año, el día 1 a las 6:00 según el reloj del servidor. Si el servidor va en UTC, esas 6:00 son las 7:00 en la España peninsular en invierno y las 8:00 en verano; para que sean las 6:00 de Madrid, ajusta la zona horaria del servidor o del planificador.
Cómo funciona
- La expresión ya está ahí: 0 0 1 * *. Los cinco campos de debajo son minuto, hora, día del mes, mes y día de la semana, en ese orden.
- Cópiala a tu crontab, a tu programación de CI o a tu planificador en la nube. Los mismos cinco campos significan lo mismo en todos.
- Para cambiarla, pon el menú en «Describirla abajo en su lugar» y escribe la programación en inglés: «every 2 hours», «at 5pm on weekdays». El campo no lee frases en español; la relectura, en cambio, sale en español.
- Comprueba la lectura, no la expresión. Lo que aparece debajo sale de analizar lo construido: es lo que haría una máquina, no lo que quisimos decir.
Preguntas frecuentes
- ¿Puedo usar el último día del mes?
- En el cron clásico, no. El 31 sencillamente no ocurre en los meses que no tienen 31: la tarea se salta febrero, abril, junio, septiembre y noviembre sin que nadie se entere. Para fin de mes, programa el día 1 del mes siguiente, o ejecuta a diario y comprueba en el script si mañana empieza otro mes.
- ¿Funciona en GitHub Actions, Kubernetes y los planificadores en la nube?
- Los cinco campos sí. Lo que cambia es todo lo demás: algunos aceptan nombres como @daily, los CronJobs de Kubernetes toman los mismos cinco, y GitHub Actions ejecuta tarde los flujos programados cuando hay carga. Pega la expresión y compruébala donde vaya a correr.
- ¿Puedo leer una expresión que ya tengo?
- Sí, para eso está el analizador de cron: pega la expresión y obtienes la explicación y las próximas ejecuciones. Es el mismo analizador que aquí relee lo construido.
- ¿Cómo lo programo a otra hora que no sea medianoche?
- Cambia los dos primeros números, el minuto y la hora: 0 6 1 * * es el día 1 a las 6:00 y 30 8 1 * *, a las 8:30. O escribe la hora en inglés en el campo, como «at 6am on the 1st», y el constructor la pone por ti.
- ¿Y el primer lunes de cada mes?
- Cron no puede expresarlo: ningún campo guarda la posición de un día de la semana dentro del mes, y la página lo dice en lugar de inventar una expresión. Lo habitual es ejecutar del día 1 al 7 y que el propio comando compruebe si es lunes antes de hacer nada.
- ¿Se envía algo a algún sitio?
- No. Se construye y se lee en esta página. Una programación cuenta cuándo hacen algo tus sistemas; no hace falta que lo sepa un servidor ajeno.