Run Weekly Tasks Every Monday at 9 AM | CronBase

cron expression Standard
$ 0 9 * * 1

Every Monday morning at nine o clock

The `0 9 * * 1` cron expression schedules a task to execute automatically every Monday at exactly 9:00 AM. This weekly cadence is widely used in enterprise environments to trigger weekly status reports, initiate system diagnostic routines, clear temporary caches from the weekend, and dispatch automated team notifications at the start of the business week.

Minute
0
Hour
9
Day of Month
*
Month
*
Day of Week
1
How it works

Next 5 Runs

  • in 1d 12h
  • in 8d 12h
  • in 15d 12h
  • in 22d 12h
  • in 29d 12h

* Tools

Code & Implementations

Bash
#!/usr/bin/env bash
# Production-ready Bash script to install a crontab entry
set -euo pipefail

CRON_SCHEDULE="0 9 * * 1"
JOB_COMMAND="/usr/local/bin/weekly-report-generator.sh >> /var/log/weekly-report.log 2>&1"

echo "Configuring cron job for weekly execution..."
# Check if crontab exists, if not create an empty one
current_cron=$(crontab -l 2>/dev/null || true)

# Avoid duplicate entries
if echo "$current_cron" | grep -Fq "$JOB_COMMAND"; then
    echo "Cron job already exists. Skipping installation."
else
    (echo "$current_cron"; echo "$CRON_SCHEDULE $JOB_COMMAND") | crontab -
    echo "Cron job successfully installed."
fi
Setup notes

Save this script to a file, make it executable with chmod +x, and run it as the user who should execute the weekly cron task.

Last verified:

Partner UptimeRobot

Keep this cron job monitored 24/7

UptimeRobot alerts you the moment a scheduled job stops responding. Free plan monitors up to 50 endpoints — no credit card required.

Platform Equivalents

AWS EventBridge

Standard cron expressions often need conversion for AWS EventBridge schedules.

EventBridge Rule
cron(0 9 ? * 1 *)

Systemd Timer

OnCalendarMon *-*-* 09:00:00

my-task.timer
[Unit]
Description=Timer for cron expression: 0 9 * * 1

[Timer]
OnCalendar=Mon *-*-* 09:00:00
Persistent=true

[Install]
WantedBy=timers.target

Last verified:

Frequently Asked Questions

What happens if the host machine is powered off on Monday at 9:00 AM?

Standard cron daemons will completely miss the execution window if the host is powered off at 9:00 AM. Unlike anacron, which catches up on missed jobs upon reboot, standard cron will not run the task until the following Monday at 9:00 AM. For critical jobs, consider using anacron or Kubernetes CronJobs with a configured startingDeadlineSeconds.

How can I handle Daylight Saving Time (DST) changes with this schedule?

If your system timezone is set to a local timezone that observes DST, the execution will shift relative to UTC. To maintain a strict execution time regardless of seasonal shifts, configure your server or application scheduler to run on UTC, or use a timezone-aware scheduling library.

Can I run this job on multiple nodes simultaneously without duplication?

Running standard cron on multiple servers will cause duplicate executions. To prevent this in a clustered environment, you must use a distributed locking mechanism (like Redis-based Redlock or database locks) or run the job within an orchestrator like Kubernetes with a Forbid concurrency policy.

How can I test this cron job without waiting until next Monday?

You can trigger the job manually by executing the underlying command or script directly. In Kubernetes, you can create a job from the CronJob template using: kubectl create job --from=cronjob/weekly-reporting-job manual-test-run

Is it possible to schedule this job to run at 9:00 AM in the user's local timezone?

Standard cron cannot dynamically adjust to different users' timezones. You must either run a centralized job that handles timezone math programmatically, or deploy multiple cron schedules across regional servers configured to their respective local times.

* Explore

Related expressions you might need

Last verified:

Was this helpful?