Cron: Every Monday
0 0 * * 1 fires once a week, every Monday at midnight — the day-of-week field's 1 corresponds to Monday. It's a popular anchor for weekly reports and digest emails, since Monday morning is when most people catch up on the previous week.
0 0 * * 1
Examples & Variations
Common Mistakes
- Scheduling a Monday report at midnight when it's meant to be read by humans — by the time people check email at 9 AM, a report generated 9 hours earlier might already feel stale.
- Forgetting that Monday morning often coincides with the highest traffic of the week for many services — a heavy Monday-morning job can compound with organic load.
- Mixing up day-of-week numbering across systems — some non-cron schedulers use 1=Sunday, which can cause an off-by-one bug when porting a schedule.
Best Practices
- For human-facing weekly reports, schedule close to when people will actually read them (e.g. 0 7 * * 1 for a 7 AM Monday digest) rather than at midnight.
- If Monday is a known high-traffic day for your app, consider whether the job could run Sunday night instead to avoid compounding load.
- Double-check day-of-week numbering against the specific cron implementation you're using — standard cron uses 0/7=Sunday, 1=Monday.
Frequently Asked Questions
- Why is Monday represented as 1 in the day-of-week field?
- Standard cron follows the convention where 0 (and 7) represent Sunday and the numbers increase through the week, making Monday 1, Tuesday 2, and so on through Saturday at 6.
- How do I run something every Monday and Thursday?
- Use a comma-separated list in the day-of-week field: 0 0 * * 1,4 runs at midnight on both Monday and Thursday.
- Can I run a job every other Monday instead of every Monday?
- Not with day-of-week alone — cron has no built-in concept of alternating weeks. The common workaround is checking the ISO week number in your job script and exiting on off-weeks.