Cron: Every Quarter
0 0 1 1,4,7,10 * fires four times a year — midnight on January 1st, April 1st, July 1st, and October 1st, the standard calendar-quarter boundaries. It's the natural schedule for quarterly reports, billing cycles, and infrequent maintenance that only needs to run a handful of times a year.
0 0 1 1,4,7,10 *
Examples & Variations
Common Mistakes
- Assuming there's a single 'every quarter' shortcut nickname — unlike @daily or @monthly, cron has no @quarterly alias; the month list (1,4,7,10) has to be written out explicitly.
- Confusing calendar quarters with a company's fiscal quarters — if your organization's fiscal year doesn't start in January, the month list needs to reflect your actual fiscal quarter-start months, not the calendar-quarter defaults.
- Adding a day-of-week restriction expecting it to mean 'the closest weekday to the 1st' — cron's OR semantics between day-of-month and day-of-week means restricting both fields runs the job on the 1st of those months OR any matching weekday, not a combined condition. Leave day-of-week as * for a genuinely quarterly schedule.
Best Practices
- Write out the month list explicitly (1,4,7,10) since there's no quarterly shortcut nickname to fall back on.
- Keep day-of-week as * for a genuinely quarterly schedule — restricting it introduces cron's OR-based day-of-month/day-of-week interaction, which rarely does what's intuitively expected.
- Document which quarter-start convention (calendar vs. fiscal) the schedule follows directly in a comment above the crontab entry, since '1,4,7,10' alone doesn't communicate that context to the next person reading it.
Frequently Asked Questions
- Is there an @quarterly shortcut like @daily or @monthly?
- No — standard cron's nickname shortcuts (@yearly, @monthly, @weekly, @daily, @hourly) don't include a quarterly option. Use the explicit month list (0 0 1 1,4,7,10 *) instead.
- What if my fiscal year doesn't start in January?
- The expression itself just runs on whichever calendar months you list — if your fiscal quarters start on different months than January/April/July/October, adjust the month list to match your organization's actual fiscal quarter-start months.
- Can I restrict this to weekdays only, skipping weekend quarter-starts?
- Not directly with a day-of-week field, because of cron's day-of-month/day-of-week OR semantics — adding 1-5 to the day-of-week field would make the job also run on every weekday, not just weekday quarter-starts. Handle that specific check inside the job itself instead.
Related Tools
Cron Parser
Translate cron expressions to plain English
Cron Cheat Sheet
Quick reference for cron syntax, special characters, and shortcuts
Cron Examples Library
Browse and search common cron expression examples
Cron: Every 20 Minutes
The cron expression for every 20 minutes is */20 * * * *, firing at :00, :20, and :40 — a true evenly-spaced interval. See examples and best practices.
Cron: First Monday (Nth Weekday) of the Month
Standard cron can't natively express 'first Monday of the month' — see why the common day-range trick is actually wrong, and the correct workaround.
Cron: Every Minute
The cron expression for running a job every minute is * * * * *. See variations, common mistakes, and best practices for minute-level scheduling.