Cron Expression: 0 9 * * 1-5

0 9 * * 1-5 Run every weekday (Mon–Fri) at 9am

Field Breakdown

ValueFieldMeaning
0minuteat minute 0
9hourat 9am
*dayany day of month
*monthevery month
1-5weekdayMonday 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

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.