⚡
fasttools.me
Run Cron Job Every Monday (0 0 * * 1)
Weekly Cadence • Monday Midnight

Run Cron Job Every Monday (0 0 * * 1)

Configure cron jobs to run every Monday at midnight (0 0 * * 1). Visual syntax breakdown, upcoming run timetable, and weekly report examples.

Direct Answer Definition

To run a cron job every Monday in Linux, use the expression `0 0 * * 1`. The `1` in the fifth position locks execution to Monday, while `0 0` specifies midnight (00:00:00). The job fires once per week at the start of the working week.

POSIX Cron Expression (5-Field)
Valid Syntax
Natural Language Schedule

Runs at minute 0, hour 0, day *, month *, weekday 1

Standard Schedule PresetsClick to load

Interactive 5-Field Workbench

Adjust individual cron segments in real time with instant two-way synchronization.

1. Minute0
0 – 59
2. Hour0
0 – 23 (24h)
3. Day of Month*
1 – 31
4. Month*
1 – 12 (Jan – Dec)
Select Month
5. Day of Week1
0 – 6 (Sun – Sat)
Select Day

Next 5 Scheduled Executions

Real-time schedule timetable projected forward from current timestamp.

12026-10-11 18:00:00 UTC
in 3d 8h
22026-10-18 18:00:00 UTC
in 10d 8h
32026-10-25 18:00:00 UTC
in 17d 8h
42026-11-01 18:00:00 UTC
in 24d 8h
52026-11-08 18:00:00 UTC
in 31d 8h

Crontab Command Snippet

Enter your executable command or script path to generate the full crontab configuration line.

Ready to paste in `crontab -e`0 0 * * 1 curl -fsS https://example.com/cron-job
Runs in system timezone or explicit TZ variablePOSIX Spec
Advertisement
Sponsored Developer Space
Cron Field Syntax Mapping

Field-by-Field Breakdown of `0 0 * * 1`

PositionField NameAllowed ValuesValue in `0 0 * * 1`Evaluation Meaning
1Minute0 – 5900 (At minute 0)
2Hour0 – 2300 (At midnight / 00:00)
3Day of Month1 – 31** (Every day of the month)
4Month1 – 12** (Every month)
5Day of Week0 – 6 (Sun-Sat)11 (Monday only)
Technical Engineering Analysis

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.

Real-World Server Implementations

Common Production Scenarios for `0 0 * * 1`

Case 01

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-kpi
Case 02

Weekly 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 -delete
Case 03

Stripe 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.py
Operational Traps & Failure Modes

Production 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`.

Related Cron Schedule Generators