Cron Schedule Examples — Common Cron Expressions for Any Interval
Cron expressions schedule recurring jobs. Here's a reference of common cron schedules: every minute, hourly, daily, weekly, monthly, and business hours — with explanations for...
Cron expressions define recurring job schedules using five fields: minute, hour, day-of-month, month, and day-of-week. Here’s a practical reference for the most common scheduling patterns you’ll need.
Use the Cron Builder to build and validate cron expressions visually.
Cron format
* * * * *
│ │ │ │ └── Day of week (0–7, Sunday=0 or 7)
│ │ │ └──── Month (1–12)
│ │ └────── Day of month (1–31)
│ └──────── Hour (0–23)
└────────── Minute (0–59)
Special characters:
*— every value in the field,— list of values (1,15,30)-— range (1-5)/— step (*/5= every 5)
Common schedule reference
Every minute
* * * * *
Use for: health checks, very frequent polling.
Every 5 minutes
*/5 * * * *
Use for: frequent sync jobs, webhook retries.
Every 15 minutes
*/15 * * * *
0,15,30,45 * * * * (equivalent)
Every 30 minutes
*/30 * * * *
0,30 * * * * (equivalent)
Every hour (at :00)
0 * * * *
Use for: hourly reports, session cleanup, cache invalidation.
Every hour at :30
30 * * * *
Use for: offset from on-the-hour to spread load.
Every 2 hours
0 */2 * * *
Every 6 hours
0 */6 * * *
0 0,6,12,18 * * * (equivalent)
Daily at midnight (00:00)
0 0 * * *
Use for: daily aggregation, database backups, report generation.
Daily at 6 AM
0 6 * * *
Use for: morning digest emails, daily batch imports.
Daily at 11:30 PM
30 23 * * *
Use for: end-of-day processing, before-midnight reports.
Twice daily (midnight and noon)
0 0,12 * * *
Business hours only (9-5, every hour)
0 9-17 * * 1-5
1-5 = Monday through Friday. Runs at 9:00, 10:00, 11:00, 12:00, 13:00, 14:00, 15:00, 16:00, 17:00.
Every weekday at 9 AM
0 9 * * 1-5
Every Monday at 8 AM
0 8 * * 1
Use for: weekly summary emails, weekly cleanup jobs.
Every Monday at midnight
0 0 * * 1
Every Sunday at 3 AM
0 3 * * 0
Use for: weekly backups (run when load is lowest).
First day of every month
0 0 1 * *
Use for: monthly billing, monthly reports.
Last day of the month
Cron has no “last day” symbol directly. Use the 28th as a safe approximation (always exists):
0 0 28 * *
Or use a script that checks if tomorrow is the 1st:
0 0 * * * [ $(date -d tomorrow +%d) -eq 1 ] && /path/to/script.sh
First Monday of every month
Cron can’t express this directly. Workaround:
0 0 1-7 * 1
This runs every Monday in the first 7 days of the month, which is always the first Monday.
Quarterly (January, April, July, October)
0 0 1 1,4,7,10 *
Use for: quarterly reports, quarterly data exports.
Yearly (January 1st at midnight)
0 0 1 1 *
Use for: annual reports, year-start resets.
Every weekday at 9 AM and 5 PM
0 9,17 * * 1-5
Every 10 minutes during business hours
*/10 9-17 * * 1-5
System cron shorthand (@keywords)
Many cron implementations support @ shortcuts:
| Shorthand | Equivalent | Meaning |
|---|---|---|
@reboot | (on startup) | Run once on system boot |
@yearly | 0 0 1 1 * | Once a year |
@annually | 0 0 1 1 * | Same as @yearly |
@monthly | 0 0 1 * * | Once a month |
@weekly | 0 0 * * 0 | Once a week (Sunday) |
@daily | 0 0 * * * | Once a day (midnight) |
@midnight | 0 0 * * * | Same as @daily |
@hourly | 0 * * * * | Once an hour |
# System crontab entries:
@daily /usr/local/bin/backup.sh
@weekly /usr/local/bin/weekly-report.sh
@reboot /usr/local/bin/start-service.sh
Six-field cron (with seconds)
Some systems (Quartz, GitHub Actions, AWS EventBridge) support a 6-field format with seconds as the first field:
* * * * * *
│ │ │ │ │ └── Day of week
│ │ │ │ └──── Month
│ │ │ └────── Day of month
│ │ └──────── Hour
│ └────────── Minute
└──────────── Second
0/30 * * * * * → Every 30 seconds
0 0 12 * * ? → Every day at noon (Quartz syntax, ? = no specific value)
0 15 10 ? * MON-FRI → 10:15 AM every weekday (Quartz)
GitHub Actions schedule examples
on:
schedule:
# Every day at 8 AM UTC:
- cron: '0 8 * * *'
# Every Monday at 9 AM UTC:
- cron: '0 9 * * 1'
# Every 6 hours:
- cron: '0 */6 * * *'
Note: GitHub Actions uses UTC. Add/subtract hours for your timezone.
Related tools
- Cron Builder — build cron expressions visually
- Cron Job Syntax — syntax reference
- Cron Pitfalls — timezone and DST issues
Related posts
- Cron Expression Syntax, Explained by Field — Five fields, nine special characters, a dozen edge cases. A complete reference f…
- Cron Pitfalls: Timezones, DST, and Missed Runs — Your cron job will run twice or skip entirely when DST changes. Here's why, how …
- AWS EventBridge Scheduler — Cron Schedules for Lambda and AWS Services — AWS EventBridge Scheduler runs Lambda functions, ECS tasks, and other AWS target…
- Cron Job Syntax — How to Write and Read Cron Expressions — Cron job syntax is five space-separated fields: minute, hour, day-of-month, mont…
Related tool
Build and parse cron expressions with human-readable explanations.
Written by Mian Ali Khalid. Part of the Dev Productivity pillar.