Run Weekly Friday Morning Jobs at 9 AM | CronBase

cron expression Standard
$ 0 9 * * 5

Every Friday morning at nine o'clock

The `0 9 * * 5` cron expression schedules a task to run once a week every Friday morning at exactly 9:00 AM. This cadence is ideal for preparing end-of-week business reports, initiating pre-weekend system backups, or triggering weekly cleanup scripts before engineering teams sign off for the weekend.

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

Next 5 Runs

  • in 5d 12h
  • in 12d 12h
  • in 19d 12h
  • in 26d 12h
  • in 33d 12h

* Tools

Code & Implementations

Bash
#!/usr/bin/env bash
# System crontab entry to run a weekly report script
# Add this line to /etc/cron.d/weekly-report or via 'crontab -e'
# 0 9 * * 5 /usr/local/bin/run-weekly-report.sh >> /var/log/weekly-report.log 2>&1

set -euo pipefail

LOCKFILE="/var/run/weekly-report.lock"
LOG_FILE="/var/log/weekly-report.log"

# Ensure only one instance runs
exec 9>"$LOCKFILE"
if ! flock -n 9; then
    echo "[$(date '+$Y-%m-%d %H:%M:%S')] Script is already running. Exiting." >&2
    exit 1
fi

echo "[$(date)] Starting Friday 9 AM weekly job..."
# Perform actual work here
if /usr/local/bin/generate-report-data; then
    echo "[$(date)] Weekly job completed successfully."
else
    echo "[$(date)] ERROR: Weekly job failed!" >&2
    exit 1
fi
Setup notes

Place the bash script in a secure directory (e.g., /usr/local/bin/), make it executable using chmod +x, and add the cron definition 0 9 * * 5 /path/to/script.sh to your system's crontab.

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 ? * 5 *)

Systemd Timer

OnCalendarFri *-*-* 09:00:00

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

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

[Install]
WantedBy=timers.target

Last verified:

Frequently Asked Questions

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

Standard system cron daemons run on the host's local time. During DST transitions, 9:00 AM still occurs normally (unlike 2:00 AM transitions), but the absolute UTC offset changes, which can disrupt downstream systems synced to UTC.

What is the best way to handle failures for this weekly job?

Implement an external monitoring service (like Healthchecks.io or Opsgenie) using a 'dead man's switch' mechanism. If the job does not check in by 9:15 AM every Friday, trigger an immediate high-priority alert to the on-call engineer.

Can I run this job on both Fridays and Saturdays at 9 AM?

Yes, you can modify the day-of-week field to include Saturday by using a list or range. The expression `0 9 * * 5,6` or `0 9 * * 5-6` will trigger the execution at 9:00 AM on both Friday and Saturday.

How do I prevent multiple instances of this weekly cron from running simultaneously?

Wrap your script execution using a locking utility like `flock` in Linux, or use a distributed lock manager like Redis/ZooKeeper if running in a clustered environment. This ensures only one instance executes even if triggered manually.

Is 9:00 AM Friday a safe time to run heavy database migrations?

Generally, no. Friday morning is typically a peak business hour. Running resource-intensive migrations or heavy analytical queries during this time can degrade application performance. Such tasks should be scheduled for weekend maintenance windows instead.

* Explore

Related expressions you might need

Last verified:

Was this helpful?