Run Every Weekday Morning at 9 AM | CronBase

cron expression Standard
$ 0 9 * * 1-5

Every weekday morning at nine o'clock

This cron expression schedules a task to run every weekday, Monday through Friday, at exactly 9:00 AM. It is widely used in corporate environments for triggering morning reports, starting business-hour synchronization pipelines, initiating daily system health checks, and warming up application caches right as the working day begins.

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

Next 5 Runs

  • in 1d 12h
  • in 2d 12h
  • in 3d 12h
  • in 4d 12h
  • in 5d 12h

* Tools

Code & Implementations

Bash
# Edit your crontab using: crontab -e
# Run weekday morning report at 9:00 AM
0 9 * * 1-5 /usr/local/bin/run-reports.sh >> /var/log/cron-reports.log 2>&1
Setup notes

Add this line to your user crontab using crontab -e. Ensure your script has executable permissions and uses absolute paths for all system binaries.

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

Systemd Timer

OnCalendarMon..Fri *-*-* 09:00:00

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

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

[Install]
WantedBy=timers.target

Last verified:

Frequently Asked Questions

How does this schedule handle Daylight Saving Time (DST) changes?

Standard system cron relies on the host machine's timezone. During DST transitions, the execution might occur an hour early or late relative to UTC. To maintain a strict 9:00 AM local time, configure your cron daemon or application runtime to use a timezone-aware scheduler (like TZ environment variables in crontab).

What happens if the Monday run fails due to weekend data volume?

Because Monday processes three days of accumulated data, it is prone to timeouts or out-of-memory errors. Implement chunking or pagination in your application logic to process data in batches rather than loading the entire weekend payload into memory at once.

How can I prevent overlapping executions if a job runs longer than 24 hours?

For long-running tasks, implement an external locking mechanism using Redis (Redlock) or database-level locks. If using Kubernetes, configure `concurrencyPolicy: Forbid` in your CronJob spec to prevent a new container from starting if the previous one is still active.

Is the day-of-week field 1-5 standard across all cron implementations?

Yes, in standard UNIX cron, 1 represents Monday and 5 represents Friday. However, be aware that some older systems or BSD variants treat 0 or 7 as Sunday, so explicitly using 1-5 is the safest and most portable way to target weekdays.

Can I run this job at 9:30 AM instead of exactly 9:00 AM?

Yes, you can easily shift the execution time by changing the first field. To run the job at 9:30 AM every weekday, modify the cron expression to `30 9 * * 1-5`. This is highly recommended to avoid resource contention at the top of the hour.

* Explore

Related expressions you might need

Last verified:

Was this helpful?