Run a Cron Job on the 1st of Every Month
Runs at midnight on the 1st of every month.
0 0 1 * *Field Breakdown
0Minute
0–59
0Hour
0–23
1Day 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
Generating monthly invoices or billing reports
Running monthly data archival
Sending monthly newsletter digests
Rotating monthly log files
$ crongen --customize "0 0 1 * *"
Want to tweak this schedule or see the next run times?
Open in Generator