Cron expression for every Sunday
0 0 * * 0
At 00:00, only on Sunday. It runs on 52 days a year.
Runs every Sunday at midnight. @weekly is identical. “Midnight on Sunday” is the start of Sunday, i.e. the night between Saturday and Sunday. That surprises people who expect it to run at the end of Sunday, a day later.
Field by field
| Field | Value | Matches |
|---|---|---|
| minute | 0 |
0 |
| hour | 0 |
0 |
| day of month | * |
every value |
| month | * |
every value |
| day of week | 0 |
SUN |
Examples
crontab
Run crontab -e and add:
0 0 * * 0 /usr/local/bin/job.sh >> /var/log/job.log 2>&1
Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
name: my-job
spec:
schedule: "0 0 * * 0"
timeZone: "Etc/UTC" # Kubernetes 1.27+
concurrencyPolicy: Forbid # skip a run if the last one is still going
jobTemplate:
spec:
template:
spec:
containers:
- name: job
image: ghcr.io/acme/job:1.0
restartPolicy: OnFailure
GitHub Actions
on:
schedule:
- cron: '0 0 * * 0' # UTC
GitHub evaluates schedules in UTC, and runs can start several minutes late at busy times.
systemd timer
# /etc/systemd/system/job.timer
[Unit]
Description=Run job.service every Sunday
[Timer]
OnCalendar=Sun *-*-* 00:00:00
Persistent=true
[Install]
WantedBy=timers.target
Enable it with systemctl enable --now job.timer, and check the next runs with
systemd-analyze calendar "Sun *-*-* 00:00:00". Persistent=true runs a missed job after
downtime, which cron can’t do.
AWS EventBridge
cron(0 0 ? * SUN *)
EventBridge cron has six fields (the last is the year), uses ? in either the day-of-month or the
day-of-week field, and numbers weekdays from 1 (Sunday) to 7. Rules run in UTC; EventBridge Scheduler also
accepts a time zone.
Similar schedules: weekly
-
Every weekday at 9 AM:
0 9 * * 1-5 -
Every Saturday and Sunday at 10 AM:
0 10 * * 6,0 -
Every Monday:
0 0 * * 1 -
Every Monday at 9 AM:
0 9 * * 1 -
Every Friday at 5 PM:
0 17 * * 5 -
Every other week:
0 9 * * 1
Have a different schedule? Paste any expression into the Cron Expression Generator, or browse all cron examples.
Sources
- POSIX: crontab
- crontab(5) manual page
- Kubernetes docs: CronJob
- GitHub Actions docs: schedule event
- systemd.time(7): calendar events
- AWS docs: EventBridge Scheduler cron expressions
Spotted a mistake? Email hello@devtoolsmith.com and we’ll fix it.
Frequently asked questions
How do I run a cron job every Sunday?
Use 0 0 * * 0. It means “At 00:00, only on Sunday”. It runs on 52 days a year.