Cron expression for weekdays at 9 AM

0 9 * * 1-5

The 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 generator

How the five fields read

FieldValueReads as
Minute0at 0
Hour9at 9
Day of month*every value
Month*every value
Day of week1-5Monday to Friday

The next five runs

What people use it for

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

ExpressionWhat it does
30 8 * * 1-5Weekdays at 08:30.
0 9,13,17 * * 1-5Weekdays at 09:00, 13:00 and 17:00.
0 9 * * mon,wed,friMonday, 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/command

Add it with crontab -e. It runs in the machine's time zone.

Kubernetes CronJob

spec:
  schedule: "0 9 * * 1-5"
  timeZone: "Etc/UTC"
  concurrencyPolicy: Forbid

timeZone 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

Scheduling jobs, pipelines and cloud infrastructure is part of my DevOps engineering work.