Crontab Every Monday at Midnight (0 0 * * 1)
Run a cron job every Monday at midnight using the day-of-week field. The standard weekly maintenance window schedule.
Detailed Explanation
Running a Cron Job Every Monday
The expression 0 0 * * 1 runs at midnight every Monday. The day-of-week field is set to 1, which represents Monday (Sunday is 0, Saturday is 6).
Field Breakdown
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At minute 0 |
| Hour | 0 | At midnight |
| Day of Month | * | Any day |
| Month | * | Every month |
| Day of Week | 1 | Monday |
Day-of-Week Values
The day-of-week field uses numeric values:
| Value | Day |
|---|---|
| 0 | Sunday |
| 1 | Monday |
| 2 | Tuesday |
| 3 | Wednesday |
| 4 | Thursday |
| 5 | Friday |
| 6 | Saturday |
Some cron implementations also accept 7 for Sunday and three-letter abbreviations (MON, TUE, WED, etc.), but numeric values are the most portable.
@weekly Shorthand
The @weekly shorthand is equivalent to 0 0 * * 0 (Sunday at midnight), not Monday. If you want Monday, you must use the explicit form.
Changing the Day
Simply change the last field:
- Every Tuesday:
0 0 * * 2 - Every Friday:
0 0 * * 5 - Every Sunday:
0 0 * * 0
Use Case
Monday schedules are standard for start-of-week maintenance: running database VACUUM/ANALYZE, clearing weekly caches, generating Monday morning reports, triggering weekly CI/CD builds, or sending weekly status emails.