Cron Job on the Last Day of Every Month – Expression & Examples
Standard cron doesn't have a "last day" keyword. Use 28-31 to cover all possible last days, or use a wrapper script to check if tomorrow is the 1st.
How It Works
Standard cron doesn't have a "last day" keyword. Use 28-31 to cover all possible last days, or use a wrapper script to check if tomorrow is the 1st.
Common Use Cases
- Month-end financial reports
- Monthly data archival
- Subscription billing
- Usage analytics snapshots
Monitor a Job on This Schedule
Writing the 0 0 28-31 * * schedule is only half the job. Cron fires silently — if the run is skipped, the server is down, or the script fails, nothing tells you. A heartbeat monitor closes that gap: your job pings a URL on success, and you get an alert the moment an expected run goes missing. CronJobPro can run this schedule for you as an HTTP job, or watch a job you run elsewhere (cron, CI, Kubernetes) with a dead-man's-switch check.
Schedule This Cron Job Now
Create a free CronJobPro account and use 0 0 28-31 * * to schedule HTTP requests automatically — with monitoring, retries, and notifications built in.
Frequently Asked Questions
What does 0 0 28-31 * * mean in cron?
Standard cron doesn't have a "last day" keyword. Use 28-31 to cover all possible last days, or use a wrapper script to check if tomorrow is the 1st.
How do I use this cron expression?
On Linux/macOS, edit your crontab with crontab -e and add:0 0 28-31 * * /path/to/your/script.sh
Or use CronJobPro to schedule HTTP requests with this expression — no server required.
What timezone does cron use?
By default, cron uses the system timezone. CronJobPro lets you set a specific timezone per job, so your schedules are predictable regardless of server location.