Run a Cron Job on the 1st of Every Month

Runs at midnight on the 1st of every month.

crontab -e
001**
$0 0 1 * *

Field Breakdown

0

Minute

0–59

0

Hour

0–23

1

Day of Month

1–31

*

Month

1–12

*

Day of Week

0–6

How It Works

Setting day-of-month to 1 with wildcards for month and day-of-week creates a monthly schedule. The job runs at 00:00 on the first day of each month—commonly used for billing cycles, monthly reports, and license renewals. This is the go-to pattern for any task that needs to run exactly twelve times per year on a predictable date.

The minute and hour are both 0, and the day-of-month is set to 1. Month and day-of-week are wildcards. The cron daemon matches this pattern only when the calendar date is the 1st of any month, resulting in 12 executions per year. Note that the day-of-week wildcard is ignored when day-of-month is explicitly set in most cron implementations.

Platform Usage

Linux: "0 0 1 * * /opt/billing/generate-invoices.sh". Kubernetes: schedule: "0 0 1 * *" with a job deadline of several hours to handle cluster downtime. AWS EventBridge: "cron(0 0 1 * ? *)" for triggering Lambda-based monthly processing.

Common Use Cases

1

Generating monthly invoices or billing reports

2

Running monthly data archival

3

Sending monthly newsletter digests

4

Rotating monthly log files

try-it

$ crongen --customize "0 0 1 * *"

Want to tweak this schedule or see the next run times?

Open in Generator

Related Examples