Cron expression: every hour during business hours
0 9-17 * * 1-5
Runs on the hour from 09:00 to 17:00, Monday to Friday — nine times a working day.
What each field means
| Field | Value | Meaning |
|---|---|---|
| minute | 0 | minute 0 |
| hour | 9-17 | hour 9 through 17 |
| day of month | * | every day of month |
| month | * | every month |
| day of week | 1-5 | day of week 1 through 5 |
Next runs
Starting from 1 January 2026, 00:00 UTC:
- Thursday 1 Jan 09:00
- Thursday 1 Jan 10:00
- Thursday 1 Jan 11:00
- Thursday 1 Jan 12:00
- Thursday 1 Jan 13:00
- Thursday 1 Jan 14:00
Things to watch
Ranges combine across fields: 9-17 in hours and 1-5 in day-of-week. Note this includes 17:00 itself.
The same schedule elsewhere
# crontab
0 9-17 * * 1-5 /usr/local/bin/my-job >> /var/log/my-job.log 2>&1
# GitHub Actions (.github/workflows/job.yml) — always UTC
on:
schedule:
- cron: '0 9-17 * * 1-5'
# Kubernetes CronJob
spec:
schedule: "0 9-17 * * 1-5"
# AWS EventBridge — six fields, and ? in one of the day fields
cron(0 9-17 ? * MON-FRI *)
Frequently asked questions
What is the cron expression to run a job every hour during business hours?
0 9-17 * * 1-5 — Runs on the hour from 09:00 to 17:00, Monday to Friday — nine times a working day.
Which time zone does cron use?
The server's local time zone, unless the scheduler says otherwise. GitHub Actions always uses UTC. Kubernetes CronJobs use UTC unless you set spec.timeZone. Running servers in UTC and converting only for display avoids an entire class of daylight-saving bugs.
What happens if the previous run is still going?
Standard cron starts a new one regardless, so long-running jobs can pile up. Wrap the command in flock -n /var/lock/my-job.lock, or set concurrencyPolicy: Forbid on a Kubernetes CronJob.
Why did my cron job not run at all?
The three usual causes: the script is not executable, the command relies on a PATH or environment variable that cron does not set, or output went nowhere because no mail transport is configured. Redirect stdout and stderr to a log file and the reason usually becomes obvious.