T
ToolPrime

Cron Expression for the First Day of Every Month

Run a cron job on the first day of every month at midnight using 0 0 1 * *. Standard schedule for monthly reports, billing, and archival.

Expression

0 0 1 * *

At 00:00 on the 1st of every month

Use Cases

Code Examples

Crontab

# At 00:00 on the 1st of every month
0 0 1 * * /path/to/your/script.sh

GitHub Actions

name: Scheduled Job
on:
  schedule:
    - cron: '0 0 1 * *'
jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo "Running First Day of Every Month"

systemd Timer

[Unit]
Description=First Day of Every Month timer

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

[Install]
WantedBy=timers.target

node-cron (Node.js)

import cron from 'node-cron'

// At 00:00 on the 1st of every month
cron.schedule('0 0 1 * *', () => {
  console.log('Running First Day of Every Month')
})

Spring (@Scheduled, Java)

// At 00:00 on the 1st of every month
@Scheduled(cron = "0 0 0 1 * *")
public void run() {
    // your task
}

Spring cron has 6 fields (a leading seconds field), so a 0 is prepended to the standard 5-field expression.

Tips

Frequently Asked Questions

Is @monthly the same as 0 0 1 * *?

Yes, @monthly is a shorthand for 0 0 1 * *, meaning midnight on the first day of every month.

How do I run on the 15th of each month instead?

Change the day-of-month field to 15: 0 0 15 * * runs at midnight on the 15th of every month.

Related Cron Expressions

Related Tools