0 0 1 * * — what this cron expression means
The cron expression 0 0 1 * * runs at midnight on the 1st of every month. Here is the field-by-field breakdown and what it means in plain English.
What 0 0 1 * * means
It runs at midnight on the 1st of every month.
Field by field
minute=0, hour=0, day-of-month=1, month *, day-of-week *.
Because day-of-month is a specific value (1) and day-of-week is *, it fires only on the 1st — once a month at 00:00.
When it runs next
Next run: midnight on the 1st of the coming month.
FAQ
What does 0 0 1 * * mean?
It runs once a month, at midnight on the first day of the month.
How do I run it on the last day of the month instead?
Cron has no 'last day' token. Run daily and guard in the script: 0 0 * * * [ "$(date +%d -d tomorrow)" = 01 ] && your-command.