Field-by-Field Breakdown of `0 0 1 1 *`
| Position | Field Name | Allowed Values | Value in `0 0 1 1 *` | Evaluation Meaning |
|---|---|---|---|---|
| 1 | Minute | 0 – 59 | 0 | 0 (At minute 0) |
| 2 | Hour | 0 – 23 | 0 | 0 (At midnight / 00:00) |
| 3 | Day of Month | 1 – 31 | 1 | 1 (1st day of the month) |
| 4 | Month | 1 – 12 | 1 | 1 (January only) |
| 5 | Day of Week | 0 – 6 (Sun-Sat) | * | * (Any day of the week) |
Annual Archival & Fiscal Year Rollup
The annual schedule 0 0 1 1 * marks the boundary between calendar years. It is used for closing annual accounting ledgers, archiving cold historical database partitions, rolling over employee PTO balances, and updating copyright notices.
The standard macros @yearly and @annually are exact synonyms for 0 0 1 1 *. When midnight strikes on New Year's Eve, the cron daemon triggers this task.
Because annual jobs execute only once every 12 months, any failure must be logged with high severity, and dry-run execution tests should be conducted in staging environments in late December.
Common Production Scenarios for `0 0 1 1 *`
Annual Accounting Ledger Close & Tax Form Prep
Closes the prior calendar year's balance sheet, locks historical ledger entries, and generates 1099/W-2 tax export files.
/usr/bin/python3 /opt/finance/close_annual_books.pyCold Historical Database Partition Archiving
Detaches prior-year PostgreSQL database table partitions and exports them to immutable S3 Glacier deep archives.
/usr/local/bin/archive_annual_partitions.shEmployee Annual PTO & Vacation Rollover
Calculates unused vacation day rollovers and resets annual paid time off balances in HR management systems.
/usr/bin/node /opt/hr/rollover_annual_pto.jsProduction Gotchas When Running `0 0 1 1 *`
- Year Boundary Failure Risk: A failed annual job cannot easily wait for the next run. Always test annual scripts with simulated date arguments before production deployment.
- Server Uptime & Maintenance: If the server is restarting at midnight on January 1st, standard cron will miss execution without anacron.
- Leap Second Considerations: While rare, leap second insertions can affect NTP synchronization during year transitions.
Frequently Asked Questions About `0 0 1 1 *`
Is @yearly the same as 0 0 1 1 *?
Yes, @yearly and @annually are standard cron aliases that expand to 0 0 1 1 *.
What happens if the server is off on January 1st?
Standard cron misses the run completely. To recover missed annual jobs after reboot, configure anacron or a persistent systemd timer (Persistent=true).
Can I use 0 0 1 JAN *?
Yes, modern Linux cron implementations allow three-letter month abbreviations: 0 0 1 JAN * is completely valid.