Field-by-Field Breakdown of `0 0 * * 1-5`
| Position | Field Name | Allowed Values | Value in `0 0 * * 1-5` | Evaluation Meaning |
|---|---|---|---|---|
| 1 | Minute | 0 – 59 | 0 | 0 (At minute 0) |
| 2 | Hour | 0 – 23 | 0 | 0 (At midnight / 00:00) |
| 3 | Day of Month | 1 – 31 | * | * (Every day of the month) |
| 4 | Month | 1 – 12 | * | * (Every month) |
| 5 | Day of Week | 0 – 6 (Sun-Sat) | 1-5 | 1-5 (Monday through Friday) |
POSIX Day-of-Week Range Architecture
In standard POSIX cron syntax, days of the week are indexed starting with Sunday as 0 (and in many implementations also 7). The range `1-5` specifies Monday, Tuesday, Wednesday, Thursday, and Friday. Some modern implementations also accept the named string `MON-FRI`.
Weekday scheduling is essential for fintech, business reporting, and B2B SaaS applications where downstream clearing houses, stock markets, and banking payment rails operate on strict business day calendars.
When both Day-of-Month and Day-of-Week are specified, POSIX enforces a union (OR) rule. However, because Day-of-Month is an asterisk (`*`) in `0 0 * * 1-5`, only the weekday restriction applies, ensuring clean 5-day weekly execution.
Common Production Scenarios for `0 0 * * 1-5`
Daily B2B Settlement & Invoicing Run
Processes queued client invoices and submits ACH Direct Debit batches to Stripe or banking partner APIs on business days.
/usr/bin/node /var/www/billing/process_settlement.jsAutomated Standup & Slack Team Briefing
Dispatches morning status prompts and ticket digests to developer engineering channels on Monday through Friday.
/usr/bin/curl -fsS -X POST -d '{"text":"Morning Standup"}' https://hooks.slack.com/services/...Trading API Cache Warming & Stock Pre-Market
Pre-warms market indices and financial ticker caches before market open (e.g. 09:00 AM Eastern) on weekdays.
/usr/bin/python3 /opt/trading/premarket_cache.pyProduction Gotchas When Running `0 0 * * 1-5`
- Bank Holidays: Cron does not know national or federal holidays. If your script must avoid bank holidays (e.g. Labor Day, Christmas), your code must check a holiday calendar internally.
- Weekend Transition: Friday's midnight run executes at the start of Friday (00:00). If you want end-of-day Friday processing, schedule at `23:59 * * 5`.
- Sunday Indexing: Remember that Sunday can be both `0` and `7` in Vixie Cron. Always use `1` for Monday to avoid off-by-one errors.
Frequently Asked Questions About `0 0 * * 1-5`
Does `1-5` include Sunday?
No. Day 1 is Monday, Day 2 is Tuesday, Day 3 is Wednesday, Day 4 is Thursday, and Day 5 is Friday. Sunday is day 0 (and day 7).
Can I use `MON-FRI` instead of `1-5`?
Yes, modern Linux distributions allow three-letter day names: `0 0 * * MON-FRI`. It behaves identically to `0 0 * * 1-5`.
How do I run a job at 9 AM on weekdays?
Set the hour field to `9`: `0 9 * * 1-5 /path/to/script.sh`. The job will execute at 09:00 AM every Monday through Friday.