Cron Every Year
With 1 in the day-of-month field and 1 in the month field, the job runs on January 1st. The 0 0 minute and hour fields pin it to midnight, so it fires once per year at the start of the year.
Cron Expression
0 0 1 1 *Field Breakdown
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At minute 0 |
| Hour | 0 | At midnight (00:00) |
| Day of Month | 1 | The 1st |
| Month | 1 | January |
| Day of Week | * | Any day of the week |
Variations
0 0 1 1 *Midnight on January 1st@yearlyShorthand alias for 0 0 1 1 * (also @annually)0 0 1 7 *Once a year on July 1st (fiscal-year start)Common Use Cases
- Annual report generation and archival
- Yearly subscription or license renewals
- New-year resets of counters and logs
Tips & Best Practices
Most cron implementations accept the @yearly (or @annually) shorthand.
Change the month field to match a fiscal year start (e.g. 7 for July).
For a specific date like a renewal day, set both day-of-month and month explicitly.