Field-by-Field Breakdown of `0 0 * * 1`
| Position | Field Name | Allowed Values | Value in `0 0 * * 1` | 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 | 1 (Monday only) |
Weekly Cycle Management in Cron
Scheduling tasks on a weekly Monday cycle is the most common approach for generating executive summaries, billing recurring subscription renewals, and performing weekly disk cleanup routines.
In the five-field format, `1` represents Monday. Modern cron daemons also accept the case-insensitive string `MON`. Both syntaxes execute once every seven days.
Because weekly jobs execute infrequently, failure to run can go unnoticed for an entire week. It is critical to monitor weekly crons with external heartbeat services or email alerts on non-zero exit codes.
Common Production Scenarios for `0 0 * * 1`
Weekly Executive Performance & KPI Email
Compiles weekly revenue, churn, and visitor metrics, rendering an executive summary PDF delivered to stakeholder inboxes.
/usr/bin/php /var/www/artisan report:weekly-kpiWeekly Temporary File & Cache Purge
Deletes old temporary upload files, orphaned session tokens, and compiled build caches older than 7 days.
find /var/tmp -type f -mtime +7 -deleteStripe Weekly Payout Reconciliation
Reconciles Stripe ledger transactions against bank deposits from the previous week, verifying fee percentages and disputed charge holds.
/usr/bin/python3 /opt/finance/reconcile_stripe.pyProduction Gotchas When Running `0 0 * * 1`
- Silent Failures: A weekly job that fails silently leaves your business without data for seven days. Always append error alerting.
- Execution Duration: Weekly batches often process seven days of accumulated records. Ensure script execution timeouts (`max_execution_time`) are configured generously.
- Server Reboots: If the server is restarting at Monday 00:00, the task will not execute until the following Monday unless managed by `anacron`.
Frequently Asked Questions About `0 0 * * 1`
Can I use `MON` instead of `1`?
Yes, `0 0 * * MON` is completely valid in modern crontabs and is functionally equivalent to `0 0 * * 1`.
How do I schedule a Monday job for 8:30 AM?
Set minute to `30` and hour to `8`: `30 8 * * 1 /path/to/script.sh`.
What is the difference between `@weekly` and `0 0 * * 1`?
`@weekly` typically runs at midnight on **Sunday** (`0 0 * * 0`). If you want execution on **Monday**, you must write `0 0 * * 1`.