/

Cron: Every Weekday

0 0 * * 1-5 runs Monday through Friday, skipping Saturday and Sunday entirely — the 1-5 range covers exactly the standard work week. It's the go-to pattern for business-hours automation, weekday-only reports, and jobs tied to office operations rather than calendar days.

0 0 * * 1-5

Examples & Variations

0 0 * * 1-5

Midnight, Monday through Friday

Try it

0 9 * * 1-5

9:00 AM, every weekday

Try it

*/30 9-17 * * 1-5

Every 30 minutes, weekday business hours

Try it

Common Mistakes

  • Writing 1-5 in the wrong field — it needs to be in the day-of-week position (5th field in a standard 5-field expression), not day-of-month.
  • Forgetting that public holidays still count as weekdays to cron — a Monday holiday won't be automatically skipped, since cron has no concept of holiday calendars.
  • Using MON-FRI text shorthand in systems that don't support named ranges — while some cron implementations accept month/day names, not all do; numeric ranges (1-5) are the safest, most portable choice.

Best Practices

  • For genuinely business-day-aware scheduling (skipping holidays), handle the holiday check in application logic — cron itself only understands day-of-week, not a holiday calendar.
  • Combine with an hour range (9-17) for anything that should only run during actual office hours, not just weekdays at any time.
  • Prefer numeric day ranges (1-5) over named ones (MON-FRI) for maximum portability across different cron implementations and schedulers.

Frequently Asked Questions

Does 1-5 in the day-of-week field mean Monday through Friday?
Yes — in standard cron numbering (0=Sunday through 6=Saturday), 1-5 covers Monday through Friday inclusive, which is exactly the conventional work week.
Will a weekday cron job automatically skip public holidays?
No. Cron has no awareness of holiday calendars — a job scheduled 0 0 * * 1-5 will still fire on a Monday that happens to be a public holiday. Skipping holidays requires logic inside the job itself.
Is MON-FRI valid instead of 1-5?
Many cron implementations accept three-letter day names as an alternative to numbers, but support isn't universal. Numeric ranges are the more portable choice across different systems.