Cron Expression: 0 9 * * 1-5
0 9 * * 1-5
Run every weekday (Mon–Fri) at 9am
Field Breakdown
| Value | Field | Meaning |
|---|---|---|
| 0 | minute | at minute 0 |
| 9 | hour | at 9am |
| * | day | any day of month |
| * | month | every month |
| 1-5 | weekday | Monday through Friday |
The range syntax 1-5 in the weekday field means "Monday through Friday". This is one of the most useful cron patterns for business-hours tasks.
Business hours patterns
# Every weekday at 9am: 0 9 * * 1-5 # Every hour during business hours, weekdays: 0 9-17 * * 1-5 # Every 30 minutes, business hours, weekdays: */30 9-17 * * 1-5 # Weekdays at 6am (before work): 0 6 * * 1-5
Related Expressions
0 9 * * 1-5
Weekdays at 9am
0 17 * * 1-5
Weekdays at 5pm
0 9-17 * * 1-5
Top of every business hour
0 6 * * 1-5
Weekdays 6am (pre-work)
0 0 * * 6,0
Weekends at midnight
Common Use Cases
- Business report generation
- Weekday data syncs
- Morning digests
- End-of-day summaries
Paste your crontab to visualise every job on a 24-hour timeline — detect overlaps, collisions, and get flock-safe versions.
Open Cron Visualiser →Frequently Asked Questions
Can I combine day-of-month and day-of-week in cron?
Yes, but cron treats them as OR, not AND. If you set both a day-of-month value and a day-of-week value (both non-*), the job runs when EITHER condition is true. To get AND behaviour, use a shell condition inside the script.
How do I skip public holidays in cron?
Cron has no concept of public holidays. The standard approach is to check a holiday list inside the script: if grep -q "$(date +%Y-%m-%d)" /etc/holidays.txt; then exit 0; fi at the start of your script.