Cron schedule recipes
Copy-ready cron expressions for the schedules people actually run: five-minute polls, weekday mornings, nightly batches, month-end closes. Click a card to copy the standard 5-field expression, or paste it into the cron tool for a plain-language explanation and the next run times. The strip on each card marks when the job fires along a day, week, month, or year.
Open the tool →Every minute
* * * * *Every 5 minutes
*/5 * * * *Every 10 minutes
*/10 * * * *Every 15 minutes
*/15 * * * *Every 30 minutes
*/30 * * * *Every hour on the hour
0 * * * *Every hour at :30
30 * * * *Every 3 hours
0 */3 * * *Every 6 hours
0 */6 * * *Hourly during work hours (9:00 to 18:00)
0 9-18 * * *Every day at midnight
0 0 * * *Every day at 9:00
0 9 * * *Twice a day (9:00 and 18:00)
0 9,18 * * *Nightly batch at 2:30 AM
30 2 * * *Weekdays at 9:00
0 9 * * 1-5Weekends at midnight
0 0 * * 0,6Every Monday at 8:00
0 8 * * 1Every Friday at 18:00
0 18 * * 5Every Sunday at 4:00 AM
0 4 * * 0Midnight on the 1st of every month
0 0 1 * *Month-end window at 23:00 (days 28 to 31)
0 23 28-31 * *First day of each quarter, midnight
0 0 1 1,4,7,10 *Every January 1st at midnight
0 0 1 1 *FAQ
- What do the 5 cron fields mean?
- Left to right: minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-6, where 0 is Sunday). Many implementations also accept 7 for Sunday, but 0 works everywhere. If you restrict both day of month and day of week, most crons combine them with OR and fire more often than you expect, so stick to one of the two like the recipes on this page do.
- Which timezone do these schedules run in?
- Cron follows the timezone of the server running the daemon. If your server is on UTC, "9:00" here means 9:00 UTC, not your local morning. Check the server timezone before installing a crontab, and where your implementation supports it, use the CRON_TZ variable to pin one. In regions with daylight saving time, avoid the early-morning hours that get skipped or repeated.
- How do I run something on the last day of the month?
- Standard 5-field cron has no last-day syntax (L is an extension found in Quartz and similar schedulers). The usual workaround is to schedule days 28 to 31 and let the script check whether tomorrow is the 1st, for example [ "$(date -d tomorrow +\%d)" = "01" ] with GNU date (inside a crontab, % must be escaped as \%). Running on the 1st instead and treating it as the close of the previous month is often even simpler.
- Can cron run something every few seconds?
- No. The smallest unit in a standard crontab is one minute; there is no seconds field. Six-field expressions with a leading seconds value belong to Quartz and similar libraries and are a syntax error in a normal crontab. For a 30-second interval, the common trick is to register the same command twice and prefix one entry with sleep 30.