0 0 1 * *
Cron reads this as: at 00:00, on day-of-month 1.
Next 5 runs
Computed in your browser's local time zone. Cron itself evaluates against the server's zone, which on most cloud hosts is UTC — see time zones & DST if that distinction matters here.
- Calculating…
When to use this schedule
Midnight on the 1st — monthly billing runs, invoice generation, quota resets, archiving the previous month. @monthly is the shorthand form.
What to watch out for
A job that processes "last month" at 00:00 on the 1st is doing the right thing; a job that processes "this month" is running before the month has any data in it. Beyond that, the 1st is safe in a way that other days are not — it exists in every month, unlike the 29th, 30th and 31st. If you need the end of the month instead, that needs a different approach entirely.
The crontab line
0 0 1 * * /usr/local/bin/your-job.sh >> /var/log/your-job.log 2>&1
Redirect the output somewhere you will actually read it — by default cron mails it, and on a host with no mail transport that means it is discarded. See the crontab guide for the surrounding syntax.
Related schedules
| Expression | Schedule |
|---|---|
@monthly | Shorthand for the same schedule |
0 3 1 * * | The 1st at 03:00 |
0 0 1,15 * * | 1st and 15th |
Build your own
Need something this page does not cover? Compose it field by field in the visual builder, or paste an expression you already have into the explainer for a per-field breakdown. The examples library collects sixty schedules in one place, and the guides cover crontab syntax, time zones, troubleshooting and production practices.