Run Weekly Jobs on Wednesday at 9 AM | CronBase

cron expression Standard
$ 0 9 * * 3

Every Wednesday morning at nine o'clock

The `0 9 * * 3` cron expression schedules a job to execute every Wednesday at exactly 9:00 AM. This mid-week, mid-morning cadence is highly effective for running non-disruptive weekly maintenance, generating business intelligence reports, sync operations, and kicking off mid-week marketing campaigns during active business hours.

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

Next 5 Runs

  • in 3d 12h
  • in 10d 12h
  • in 17d 12h
  • in 24d 12h
  • in 31d 12h

* Tools

Code & Implementations

Bash
#!/usr/bin/env bash
# Add this to your crontab using 'crontab -e'
# 0 9 * * 3 /usr/local/bin/wednesday_cleanup.sh >> /var/log/cron_wednesday.log 2>&1

set -euo pipefail

LOG_FILE="/var/log/cron_wednesday.log"
echo "[$(date -u '+\%Y-\%m-\%dT\%H:\%M:\%SZ')] Starting weekly Wednesday maintenance task..." >> "$LOG_FILE"

# Run the actual maintenance payload
if /usr/local/bin/perform_maintenance; then
    echo "[$(date -u '+\%Y-\%m-\%dT\%H:\%M:\%SZ')] Maintenance completed successfully." >> "$LOG_FILE"
else
    echo "[$(date -u '+\%Y-\%m-\%dT\%H:\%M:\%SZ')] ERROR: Maintenance task failed!" >> "$LOG_FILE"
    # Trigger alert payload here (e.g., Slack webhook or PagerDuty)
    exit 1
fi
Setup notes

Add the cron line to your user's crontab using crontab -e. The wrapper script ensures proper logging, error handling, and exit codes.

Last verified:

Partner BetterStack

Monitor this schedule in production

Get alerted the moment this cron job fails, is late, or doesn't run. BetterStack tracks execution, duration, and output — no infrastructure required.

Platform Equivalents

AWS EventBridge

Standard cron expressions often need conversion for AWS EventBridge schedules.

EventBridge Rule
cron(0 9 ? * 3 *)

Systemd Timer

OnCalendarWed *-*-* 09:00:00

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

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

[Install]
WantedBy=timers.target

Last verified:

Frequently Asked Questions

How does daylight saving time affect this Wednesday 9 AM schedule?

If your system timezone is set to a local zone that observes DST, the job will shift relative to UTC but remain at 9:00 AM local time. To maintain a strict UTC interval, run your cron daemon in UTC, which means the local execution time will shift by one hour twice a year.

What happens if the server is offline at Wednesday 9:00 AM?

Standard cron does not catch up on missed executions. If your server is offline during the trigger window, the job will not run until the following Wednesday. For critical tasks, use an orchestrator with a misfire instruction or 'anacron' for local environments.

How can I prevent this weekly job from overlapping with itself if it runs long?

Since this job runs once a week, an overlap is highly unlikely unless the job hangs. Implement file-based locking using 'flock' in Bash, use a distributed lock manager like Redis for microservices, or set 'concurrencyPolicy: Forbid' in Kubernetes.

Can I run this job on multiple specific days instead of just Wednesday?

Yes, you can modify the fifth field. For example, changing the expression to `0 9 * * 1,3,5` will run the job at 9:00 AM on Mondays, Wednesdays, and Fridays instead of only on Wednesdays.

How do I monitor and alert on failures for this weekly cron job?

Because weekly jobs run infrequently, silent failures are dangerous. Integrate a push-monitoring tool (like Healthchecks.io or Opsgenie) that expects a ping every Wednesday morning, and configure it to alert your team if the ping is missed.

* Explore

Related expressions you might need

Last verified:

Was this helpful?