Skip to content

Every Sunday cron: what 0 9 * * 0 means and why Sunday is 0 and 7

Runs in your browser — nothing you paste leaves this page. How we prove that

Cron Expression Tester playground

Example

Five fields — minute, hour, day of month, month, day of week. Macros like @daily are supported too.

Results update as you type — press Enter to run now.

Timezone
fig. 04 — cron-expression-tester · scheduling Valid
Result

At 09:00, on Sunday.

Minute0
Hour9
Day of month*
Month*
Day of week0
Next runs
  • Computed in your browser, in your timezone.

`0 9 * * 0` fires once a week, at 09:00 on Sunday. The engine reads it as: At 09:00, on Sunday.

Sunday is 0 (and usually 7)

Standard cron numbers the week from Sunday = 0 to Saturday = 6. Most implementations, including Vixie cron and cronie, also accept 7 as Sunday so that ranges like 1-7 read naturally as Monday to Sunday. 0 9 * * 0, 0 9 * * 7 and 0 9 * * SUN are therefore the same schedule on those systems; 0 is the most portable choice.

The parser on this page reads the expression as: At 09:00, on Sunday. The next run times in the panel above are computed in your browser, in your own timezone, so they are not printed in this text.

Sunday maintenance windows

Sunday morning is a traditional low-traffic slot for heavier maintenance: database VACUUM or index rebuilds, full backups, OS patching with a reboot. 0 9 * * 0 flock -n /run/lock/weekly-maint.lock /opt/ops/bin/weekly-maintenance >> /var/log/weekly-maint.log 2>&1 is a typical shape. Long jobs are exactly the ones that overlap, so the lock earns its place even on a weekly schedule.

Low traffic for your users depends on where they are. 09:00 Sunday UTC is Sunday afternoon in Asia and Sunday early morning in the Americas, so pick the hour from your traffic graphs, not from the calendar.

Timezone and daylight saving

Many zones change their clocks on a Sunday, typically in the early hours. A job at 09:00 is clear of the transition itself, but if the server follows local time the run moves an hour relative to UTC on those weekends. If it has to line up with something scheduled in UTC, such as a provider's maintenance window or a GitHub Actions workflow, keep the server on UTC or pin the zone with CRON_TZ or a Kubernetes timeZone.

systemd, Kubernetes and GitHub Actions

systemd: OnCalendar=Sun *-*-* 09:00:00. Kubernetes: schedule: "0 9 * * 0". GitHub Actions accepts 0 9 * * 0 and runs it at 09:00 UTC. If you want Sunday at midnight instead, that is what the @weekly macro means; every Monday is the start-of-week counterpart.

FAQ

Questions, answered.

Tap a question to expand the answer.

Use 0. It is defined by POSIX cron and accepted everywhere, while 7 is a common extension that some minimal cron implementations reject.

List both days in the day-of-week field: 0 9 * * 0,6, or 0 9 * * SAT,SUN.

More free, private DevOps tools.

The Cron Expression Tester is one tool in OpsCanopy — a growing canopy of browser-based validators, converters and testers that never touch a server.

New to Linux?  Read the Linux guide →

42 free tools, every one offline-capable — opscanopy.com works with no signup and nothing uploaded.

Scheduling on Linux? Pair this with the Cron to systemd Converter, or browse the full tools directory.

Not affiliated with or endorsed by any cron implementation. Format names are used only to describe what this tool reads. OpsCanopy is free and open.