Expresión cron 0 0 1 * * ejecuta a medianoche del día 1 de cada mes. Cubre @monthly, el workaround para el último día y casos borde con años bisiestos.
⏰At 12:00 AM, on day 1 of the month
*Cualquier valor,Separador de lista-Rango/Paso1-5Rango 1 a 5*/15Cada 15 unidadesLa expresión cron 0 0 1 * * se ejecuta en el minuto 0 de la hora 0 del día 1 de cada mes, sin importar el mes o el ano. Esto significa que el trabajo se ejecuta a la medianoche del 1 de enero, 1 de febrero, 1 de marzo, etc., exactamente 12 veces al ano (una vez por cada mes calendario).
Desglose de campos:
| Campo | Valor | Significado |
|---|---|---|
| Minuto | 0 |
Al inicio de la hora |
| Hora | 0 |
Medianoche |
| Día del mes | 1 |
Día 1 del mes |
| Mes | * |
Cada mes |
| Día de la semana | * |
Cualquier día |
@monthly es un atajo para 0 0 1 * * soportado por la mayoría de los servicios cron:
@monthly /opt/jobs/billing-cycle
# equivalente a:
0 0 1 * * /opt/jobs/billing-cycle
Si programas un trabajo para los días 29, 30 o 31, se omitira silenciosamente en los meses que no tienen esos días:
| Expresión | Meses omitidos |
|---|---|
0 0 29 * * |
Febrero (la mayoría de los anos) |
0 0 30 * * |
Febrero |
0 0 31 * * |
Feb, Abr, Jun, Sep, Nov |
0 0 29 * * omite febrero por completo en los anos no bisiestos. En anos bisiestos se ejecuta el 29 de febrero.
Cron no tiene sintaxis nativa para ‘el último día del mes’. El workaround práctico es ejecutar el trabajo a diario y verificar la fecha en el script:
#!/bin/bash
# Salir si mañana no es el día 1 (es decir, hoy es el último día del mes)
if [ "$(date -d tomorrow +%d)" != "01" ]; then
exit 0
fi
# lógica real del trabajo
La generación de facturas, renovaciones de suscripciones o el recalculo de cargos basados en uso suele ocurrir en el limite del ciclo de facturación, el día 1 del mes.
Los reportes financieros, de ventas y operativos a menudo recopilan datos del mes anterior.
Mover datos de más de un mes a almacenamiento en frio, archivar registros antiguos de bases de datos son usos naturales para cron mensual.
0 0 * * * para trabajos diarios0 0 * * 1-5 para programaciones de lunes a viernesNothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.