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
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.
At 09:00, on Sunday.
- 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.
Should I use 0 or 7 for Sunday?
Use 0. It is defined by POSIX cron and accepted everywhere, while 7 is a common extension that some minimal cron implementations reject.
How do I run on both Saturday and Sunday?
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.
More in Scheduling
Read more about this
- GitHub Actions cron runs in UTC: convert your schedule and check the real next run time GitHub Actions cron timezone UTC explained: why schedule: cron: always fires on UTC, how DST shifts the wall-clock time, and how to check the real next run.
- Reading cron expressions: a field-by-field guide A field-by-field guide to reading cron expressions — the five time fields, ranges, steps, lists and @macros — plus the gotchas that misfire schedules.
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.