Original Research

Cron Expression Patterns

The 50 most common cron schedules analyzed with English translations, execution frequencies, and real-world use cases.

By Michael Lip · Published April 10, 2026 · zovo.one

50
Patterns Documented
1,032
SO Votes (Top Q)
5
Cron Fields
7
SO Questions

Cron expressions are the universal language for scheduling tasks on Unix systems, CI/CD pipelines, and cloud services. Despite their ubiquity, most developers memorize only a handful of patterns and look up the rest. This reference catalogs the 50 most common cron expressions by category, from sub-hourly intervals to complex scheduling patterns.

Cron field order: minute hour day-of-month month day-of-week — each separated by a space. Asterisk (*) = every value, slash (/) = step, comma (,) = list, hyphen (-) = range.

Complete Pattern Reference

# Expression English Runs/Day Frequency Typical Use Case
1* * * * *Every minute1,440Very HighHealth checks, queue processing
2*/5 * * * *Every 5 minutes288HighCache refresh, metric collection
3*/10 * * * *Every 10 minutes144HighAPI polling, sync jobs
4*/15 * * * *Every 15 minutes96HighReport generation, data aggregation
5*/30 * * * *Every 30 minutes48MediumEmail digest, analytics rollup
60 * * * *Every hour (on the hour)24MediumLog rotation, hourly reports
730 * * * *Every hour at :3024MediumStaggered hourly tasks
80 */2 * * *Every 2 hours12MediumData sync, feed updates
90 */3 * * *Every 3 hours8MediumBatch processing
100 */4 * * *Every 4 hours6MediumSearch index rebuild
110 */6 * * *Every 6 hours4MediumSSL cert checks, DNS propagation
120 */8 * * *Every 8 hours (3x daily)3LowShift-based reports
130 */12 * * *Every 12 hours (2x daily)2LowTwice-daily digest
140 0 * * *Every day at midnight1DailyNightly backups, DB cleanup
150 6 * * *Every day at 6 AM1DailyMorning reports, pre-market data
160 9 * * *Every day at 9 AM1DailyBusiness day start tasks
170 12 * * *Every day at noon1DailyMidday reports, lunch notifications
180 17 * * *Every day at 5 PM1DailyEnd-of-day summary, EOD reports
190 23 * * *Every day at 11 PM1DailyPre-midnight cleanup
2030 2 * * *Every day at 2:30 AM1DailyLow-traffic maintenance window
210 0 * * 0Every Sunday at midnight1/7WeeklyWeekly backups, weekly report
220 0 * * 1Every Monday at midnight1/7WeeklyStart-of-week analytics
230 9 * * 1Every Monday at 9 AM1/7WeeklyWeekly standup reminder
240 0 * * 5Every Friday at midnight1/7WeeklyFriday deploy freeze
250 17 * * 5Every Friday at 5 PM1/7WeeklyWeekly summary email
260 0 * * 1-5Weekdays at midnight5/7WeekdayBusiness-day-only tasks
270 9 * * 1-5Weekdays at 9 AM5/7WeekdayBusiness hours monitoring start
28*/5 9-17 * * 1-5Every 5 min, business hours, weekdays108HighBusiness-hours-only monitoring
290 0 * * 6,0Weekends at midnight2/7WeekendWeekend maintenance window
300 0 1 * *First day of every month1/moMonthlyMonthly billing, invoicing
310 0 15 * *15th of every month1/moMonthlyMid-month payroll
320 0 1 1 *January 1st at midnight1/yrAnnualAnnual data archival
330 0 1 */3 *Every quarter (1st day)4/yrQuarterlyQuarterly reports
340 0 1 */6 *Every 6 months (Jan & Jul 1st)2/yrSemi-AnnualSemi-annual audit
350 0 1,15 * *1st and 15th of every month2/moBi-MonthlyBi-monthly payroll
360 0,12 * * *Midnight and noon2LowTwice-daily sync
370 8,20 * * *8 AM and 8 PM2LowMorning/evening alerts
380 0 * * 1,3,5Mon, Wed, Fri at midnight3/7LowAlternating-day backups
390 2 * * 0Sunday at 2 AM1/7WeeklyFull weekly backup (low traffic)
400 3 1 * *1st of month at 3 AM1/moMonthlyMonthly DB optimization
41*/2 * * * *Every 2 minutes720Very HighNear-realtime monitoring
42*/3 * * * *Every 3 minutes480Very HighQueue drain frequency
430 4 * * *Every day at 4 AM1DailyETL pipeline, data warehouse load
4415 14 1 * *1st of month at 2:15 PM1/moMonthlyMonthly status report
450 22 * * 1-5Weekdays at 10 PM5/7WeekdayNightly test suite
460 0 * * 2,4Tuesdays and Thursdays at midnight2/7LowBi-weekly deployments
475 4 * * 0Sunday at 4:05 AM1/7WeeklyAvoid midnight exact (reduce contention)
480 1 * * *Every day at 1 AM1DailyNightly cleanup, log archival
490 0 * 1,4,7,10 *First day of each quarter4/yrQuarterlyQuarterly compliance scan
50@rebootOnce at system startupN/ABootStart daemons, mount drives

Community Questions from Stack Overflow

Real cron questions from developers, sourced from the Stack Overflow API (sorted by votes):

1,032
620
572
560
486
464

Methodology

Patterns were selected based on frequency of appearance in:

Execution frequencies assume UTC timezone. Actual run counts may vary with timezone and DST transitions. The @reboot special string is non-standard but widely supported.

Frequently Asked Questions

What does * * * * * mean in cron?

The cron expression '* * * * *' means 'every minute'. Each asterisk represents a field: minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-7). An asterisk means 'every possible value' for that field. This is the most frequent possible cron schedule and runs 1,440 times per day.

How do I run a cron job every 5 minutes?

Use '*/5 * * * *' to run a cron job every 5 minutes. The */5 in the minute field means 'every 5th minute' (0, 5, 10, 15, ..., 55). This runs 288 times per day. Alternative patterns: '0,5,10,15,20,25,30,35,40,45,50,55 * * * *' is equivalent but more verbose. For every 5 minutes during business hours only: '*/5 9-17 * * 1-5'.

What is the difference between cron and crontab?

Cron is the scheduling daemon (background service) that executes scheduled commands. Crontab (cron table) is the file or command used to create, edit, and manage the schedule entries. You edit your crontab with 'crontab -e' and list entries with 'crontab -l'. The cron daemon reads all crontab files and executes commands at their scheduled times.

Can I run a cron job every 30 seconds?

Standard cron does not support sub-minute intervals — the smallest unit is one minute. To run every 30 seconds, use two cron entries: '* * * * * /path/to/script' and '* * * * * sleep 30 && /path/to/script'. Alternatively, use systemd timers (OnUnitActiveSec=30s) or a process manager like supervisord.

How do I schedule a cron job for the last day of every month?

There is no direct 'last day of month' syntax in standard cron. The most reliable approach is: '59 23 28-31 * * [ $(date -d tomorrow +%d) -eq 1 ] && /path/to/script'. This checks if tomorrow is the 1st (meaning today is the last day). Some cron implementations like Quartz support 'L' for last day: '0 0 L * ?'.

Related Tools

Cron Expression Builder Cron to English Cron Next Runs Crontab Guru

Free to use under CC BY 4.0 license. Cite this page when sharing.