Run at 8:30 AM Monday through Friday | CronBase

cron expression Standard
$ 30 8 * * 1-5

Every weekday morning at half past eight

The `30 8 * * 1-5` cron expression schedules a task to run automatically at 8:30 AM every weekday, Monday through Friday. It is widely used in corporate environments to trigger morning reports, send daily standup reminders, warm up application caches, or initiate business-day data pipelines before workers log in.

Minute
30
Hour
8
Day of Month
*
Month
*
Day of Week
1-5
How it works

Next 5 Runs

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

* Tools

Code & Implementations

Bash
#!/usr/bin/env bash
# To install this cron job, run: (crontab -l ; echo "30 8 * * 1-5 /usr/local/bin/morning-sync.sh") | crontab -
set -euo pipefail

readonly LOCKFILE="/var/tmp/morning_sync.lock"

# Acquire an exclusive file lock to prevent overlapping runs
exec 9>"$LOCKFILE"
if ! flock -n 9; then
    echo "Error: Another instance of the morning sync is already running." >&2
    exit 1
fi

echo "Starting daily weekday synchronization at $(date)"
# Place your actual production business logic here
# Example: curl -f -X POST https://api.internal/v1/sync

echo "Synchronization completed successfully."
exit 0
Setup notes

Save this script to /usr/local/bin/morning-sync.sh, make it executable with chmod +x, and register it in the system crontab using the standard 5-field syntax.

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

Systemd Timer

OnCalendarMon..Fri *-*-* 08:30:00

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

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

[Install]
WantedBy=timers.target

Last verified:

Frequently Asked Questions

How does Daylight Saving Time (DST) affect this 8:30 AM schedule?

Standard cron engines rely on the local system time. During DST transitions, local time shifts. If the system is set to a timezone with DST, the job will adjust automatically to run at local 8:30 AM. To ensure consistency without DST-induced duplicate runs or gaps, run your host systems on UTC and offset the cron expression accordingly.

Why is my weekday job not running on public holidays?

Cron has no native capability to recognize regional or national holidays; it strictly evaluates the day-of-week field (1-5 for Monday through Friday). To skip execution on holidays, you must implement a check in your script or code that queries an internal calendar API and exits early with a success status.

Can I change this to run only on specific weekdays like Monday and Wednesday?

Yes, you can modify the fifth field (day-of-week) from a range to a comma-separated list. Changing `1-5` to `1,3` will restrict execution to Mondays and Wednesdays at 8:30 AM. This is highly useful for semi-weekly data syncs or mid-week reports.

How can I prevent multiple instances of this job from overlapping if it runs slowly?

To prevent overlapping runs, wrap your execution in a file-locking utility like `flock` on Linux, or use a distributed lock manager (such as Redis or Consul) if your application runs in a containerized environment like Kubernetes. Setting `concurrencyPolicy: Forbid` in Kubernetes CronJobs also prevents overlapping.

What is the best way to test this cron expression before deploying to production?

You can validate the schedule syntax using dry-run utilities like `croniter` in Python to output the next ten scheduled execution dates. This allows you to verify that the target times align perfectly with your business-hours requirements before production deployment.

* Explore

Related expressions you might need

Last verified:

Was this helpful?