⚡
fasttools.me
Run Cron Job on the 1st Day of the Year (0 0 1 1 *)
Annual Cadence • January 1st Midnight

Run Cron Job on the 1st Day of the Year (0 0 1 1 *)

Configure annual cron jobs executing on New Year's Day (0 0 1 1 *). Visual syntax breakdown, upcoming annual run dates, and archival scripts.

Direct Answer Definition

To run a cron job annually on the first day of the year (New Year's Day), use the expression 0 0 1 1 * (or the shortcut @yearly / @annually). This schedule fires once every 365 days (366 in leap years) on January 1st at midnight (00:00).

POSIX Cron Expression (5-Field)
Valid Syntax
Natural Language Schedule

Runs at minute 0, hour 0, day 1, month 1, weekday *

Standard Schedule PresetsClick to load

Interactive 5-Field Workbench

Adjust individual cron segments in real time with instant two-way synchronization.

1. Minute0
0 – 59
2. Hour0
0 – 23 (24h)
3. Day of Month1
1 – 31
4. Month1
1 – 12 (Jan – Dec)
Select Month
5. Day of Week*
0 – 6 (Sun – Sat)
Select Day

Next 5 Scheduled Executions

Real-time schedule timetable projected forward from current timestamp.

12026-12-31 18:00:00 UTC
in 84d 8h

Crontab Command Snippet

Enter your executable command or script path to generate the full crontab configuration line.

Ready to paste in `crontab -e`0 0 1 1 * curl -fsS https://example.com/cron-job
Runs in system timezone or explicit TZ variablePOSIX Spec
Advertisement
Sponsored Developer Space
Cron Field Syntax Mapping

Field-by-Field Breakdown of `0 0 1 1 *`

PositionField NameAllowed ValuesValue in `0 0 1 1 *`Evaluation Meaning
1Minute0 – 5900 (At minute 0)
2Hour0 – 2300 (At midnight / 00:00)
3Day of Month1 – 3111 (1st day of the month)
4Month1 – 1211 (January only)
5Day of Week0 – 6 (Sun-Sat)** (Any day of the week)
Technical Engineering Analysis

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.

Real-World Server Implementations

Common Production Scenarios for `0 0 1 1 *`

Case 01

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.py
Case 02

Cold 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.sh
Case 03

Employee 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.js
Operational Traps & Failure Modes

Production 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.

Related Cron Schedule Generators