PatternCron

Once a year

The annual-renewal schedule: fires at 09:00 on January 1st, exactly once, then stays silent for the next 364 days.

Last updated

Pattern
0 9 1 1 *
Open in Crontab Schedule Creator

In plain English

  • Fires once, at 09:00 on January 1st
  • 1 run per year

Why it’s written this way

Minute 0, hour 9, day-of-month 1, month 1, day-of-week left open: the only date that satisfies all four is January 1st. This is the same expression the @yearly macro expands to internally.

A once-a-year job is the extreme case of every scheduling decision cron makes elsewhere — there's no second chance later in the same cycle if something goes wrong, which changes how much you should trust it running unattended.

Edge cases to know

  • If the server is down, rebooting, or mid-maintenance at 09:00 on January 1st, this run is skipped entirely and doesn't happen again until the following year — for a renewal or certificate-expiry job, that's a year-long gap, not a missed minute.
  • Because the window between runs is so wide, a typo in the schedule can go unnoticed for months; pair a yearly cron job with an external monitor that alerts if the expected run never checks in.
  • New Year's Day is a common day for infrastructure to be short-staffed — worth asking whether a business-critical annual job should really fire on the one day least likely to have anyone watching it.

Related in Patterns