Run Thursday Morning Jobs at 9 AM | CronBase

cron expression Standard
$ 0 9 * * 4

Every Thursday morning at nine o'clock

The `0 9 * * 4` cron expression schedules a task to run once a week on Thursday mornings at exactly 9:00 AM. This cadence is ideal for mid-week operations, end-of-week preparation reports, weekly backup verification, and automated system synchronization before the weekend begins.

Minute
0
Hour
9
Day of Month
*
Month
*
Day of Week
4

Next 5 Runs

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

* Tools

Code & Implementations

nodejs
const cron = require('node-cron');
const { exec } = require('child_process');
// Schedule task to run at 9:00 AM every Thursday
cron.schedule('0 9 * * 4', () => {
  console.log(`[${new Date().toISOString()}] Initiating Thursday morning cron job...`);
  exec('/usr/local/bin/weekly-report.sh', (error, stdout, stderr) => {
    if (error) {
      console.error(`[ERROR] Execution failed: ${error.message}`);
      return;
    }
    if (stderr) {
      console.warn(`[WARN] Standard Error Output: ${stderr}`);
    }
    console.log(`[SUCCESS] Output: ${stdout}`);
  });
}, {
  scheduled: true,
  timezone: "UTC"
});
Setup notes

Install node-cron using 'npm install node-cron' and run this script as a daemonized background process using PM2.

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

Systemd Timer

OnCalendarThu *-*-* 09:00:00

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

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

[Install]
WantedBy=timers.target

Frequently Asked Questions

What day of the week does the number 4 represent in standard cron?

In standard cron dialects, the number 4 in the fifth field represents Thursday, assuming Sunday is 0 or 7 and Monday is 1. Always verify your specific environment's dialect, as some systems vary.

How do Daylight Saving Time (DST) changes affect this 9:00 AM schedule?

If your cron daemon runs on local time, DST transitions will cause the job to execute at a different UTC offset twice a year. To maintain a strict 24-hour separation or predictable UTC runtime, run your cron daemon in UTC.

What happens if a previous Thursday job is still running when 9:00 AM arrives?

By default, standard cron will start a new process regardless of whether the previous instance finished. Use locking mechanisms like `flock` in Bash or `concurrencyPolicy: Forbid` in Kubernetes to prevent concurrent executions.

Can I run this job on Thursday only if it is the first Thursday of the month?

Standard cron does not support logic like "first Thursday of the month" natively. You must schedule the job for every Thursday (`0 9 * * 4`) and add an evaluation script to check if the current day is between 1 and 7.

How can I safely test a job scheduled for Thursday at 9:00 AM?

You can temporarily shift the cron expression to run every few minutes (e.g., `*/5 * * * *`) in a staging environment, or trigger the underlying script manually to verify its behavior and performance under load.

* Explore

Related expressions you might need

Was this helpful?

Last verified: