Cron expression for weekdays at 9 AM
0 9 * * 1-5The job runs at 09:00 on Monday, Tuesday, Wednesday, Thursday and Friday, and skips the weekend.
Runs when: minute 0; hour 9; every day of month; every month; on Mon.
Change it in the cron expression generatorHow the five fields read
| Field | Value | Reads as |
|---|---|---|
| Minute | 0 | at 0 |
| Hour | 9 | at 9 |
| Day of month | * | every value |
| Month | * | every value |
| Day of week | 1-5 | Monday to Friday |
The next five runs
What people use it for
- A stand-up or daily status summary posted to chat
- Business-hours data refreshes
- Reminders for a team that works Monday to Friday
Cron does not know about holidays or time zones
The schedule fires on public holidays, because cron has no calendar. If that matters, have the script check a holiday list and exit early. 09:00 is also the scheduler's local time. Some cron implementations accept a CRON_TZ line to change that, but it is not universal, so test yours before you rely on it. Weekday names such as MON-FRI also work in many crons, but numbers are safer where you are unsure.
Variations of weekdays at 9 AM
| Expression | What it does |
|---|---|
30 8 * * 1-5 | Weekdays at 08:30. |
0 9,13,17 * * 1-5 | Weekdays at 09:00, 13:00 and 17:00. |
0 9 * * mon,wed,fri | Monday, Wednesday and Friday at 09:00 (day names work in most crons). |
The same schedule in four tools
Linux crontab
0 9 * * 1-5 /path/to/commandAdd it with crontab -e. It runs in the machine's time zone.
Kubernetes CronJob
spec:
schedule: "0 9 * * 1-5"
timeZone: "Etc/UTC"
concurrencyPolicy: ForbidtimeZone is stable from Kubernetes 1.27. Without it, the controller's time zone applies. Forbid stops a new run starting while the last one is still going.
GitHub Actions
on:
schedule:
- cron: '0 9 * * 1-5'Schedules run in UTC from the default branch, and a run can start a few minutes late when GitHub is busy. Scheduled workflows in public repositories are disabled after 60 days without repository activity.
AWS EventBridge
cron(0 9 ? * MON-FRI *)EventBridge uses six fields, with a question mark in one of the two day fields, and rules run in UTC. Weekday numbers start at Sunday = 1, so names such as MON are safer than numbers.
Questions about weekdays at 9 AM
- What does 1-5 mean in the day-of-week field?
- Cron numbers the days from Sunday = 0, so 1 is Monday and 5 is Friday. 1-5 is the range Monday to Friday.
- How do I include Saturday?
- Use 1-6: 0 9 * * 1-6 runs Monday to Saturday.
Nearby schedules
- Cron expression for daily at midnight: Every day, including weekends.
- Cron expression for every Monday: One weekday only.
- All schedules and the generator
Scheduling jobs, pipelines and cloud infrastructure is part of my DevOps engineering work.