Cron jobs are the backbone of automated computing. From simple scripts that run every 5 minutes to complex quarterly billing cycles, cron expressions control when your automation fires. But writing them from scratch can be frustrating — one wrong character and your job runs at 3 AM instead of 3 PM.
This guide gives you 50+ copy-paste cron job examples organized by use case, with plain-English explanations for every single one. We cover both standard Linux crontab (5-field) and AWS EventBridge (6-field) formats.
Cron Expression Basics (Quick Review)
If you already know cron syntax, skip ahead. If not, here's what you need to know before diving into examples.
A standard Linux cron expression has 5 fields, read left to right:
| Symbol | Meaning | Example |
| * | Any value | * * * * * — every minute |
| - | Range | 9-17 — hours 9 through 17 |
| , | List | 1,15 — 1st and 15th |
| / | Step | */5 — every 5 units |
| L | Last (not all implementations) | Last day of month |
| @yearly | Shortcut for once a year | = 0 0 1 1 * |
| @monthly | Shortcut for once a month | = 0 0 1 * * |
| @weekly | Shortcut for once a week | = 0 0 * * 0 |
| @daily | Shortcut for once a day | = 0 0 * * * |
| @hourly | Shortcut for once an hour | = 0 * * * * |
💡 Quick Read Trick
Read a cron expression right to left: "year → month → day-of-week → day-of-month → hour → minute". It helps parse complex expressions faster. For example
0 9 * * 1 = "minute 0, hour 9, any day-of-month, any month, Monday" =
every Monday at 9:00 AM.
Every N Minutes Examples
These are the most common cron expressions for polling systems, health checks, and lightweight recurring tasks.
* * * * *
Every single minute
60 times per hour, 1,440 times per day
Linux & AWS
*/2 * * * *
Every 2 minutes
Runs at :00, :02, :04, :06...
Linux
*/5 * * * *
Every 5 minutes
Runs at :00, :05, :10, :15... — very common for health checks
Linux & AWS
*/10 * * * *
Every 10 minutes
6 times per hour
Linux & AWS
*/15 * * * *
Every 15 minutes
Quarter-hour intervals: :00, :15, :30, :45
Linux & AWS
*/30 * * * *
Every 30 minutes
Twice per hour: :00 and :30
Linux & AWS
0-59/20 * * * *
Every 20 minutes
Runs at :00, :20, :40
Linux
Hourly Examples
Hourly cron jobs are perfect for aggregation tasks, syncing data from external APIs, or generating rollup reports.
0 * * * *
Every hour at :00
Exactly at the top of every hour
Linux
30 * * * *
Every hour at :30
Half-past every hour — stagger from top-of-hour crowd
Linux
0 */2 * * *
Every 2 hours
Midnight, 2 AM, 4 AM, 6 AM... 22:00
Linux
0 */4 * * *
Every 4 hours
00:00, 04:00, 08:00, 12:00, 16:00, 20:00
Linux
0 */6 * * *
Every 6 hours
4 times a day: midnight, 6 AM, noon, 6 PM
Linux
0 9-17 * * *
Every hour, 9 AM to 5 PM only
Great for business-hours-only jobs
Linux
Daily Examples
Daily cron jobs are ideal for database backups, daily report generation, cleanup tasks, and digest emails.
0 0 * * *
Every day at midnight
Also written as @daily or @midnight
Linux
0 1 * * *
Every day at 1:00 AM
Good for after-midnight jobs to avoid midnight congestion
Linux
0 2 * * *
Every day at 2:00 AM
Classic time for database backups (low traffic)
Linux
0 6 * * *
Every day at 6:00 AM
Early morning — reports ready before the team wakes up
Linux
0 9 * * *
Every day at 9:00 AM
Start-of-business-day trigger
Linux
0 12 * * *
Every day at noon
Midday sync, lunch-hour processing
Linux
0 18 * * *
Every day at 6:00 PM
End-of-business-day processing
Linux
0 23 * * *
Every day at 11:00 PM
Pre-midnight — last cleanup before the day ends
Linux
30 23 * * *
Every day at 11:30 PM
30 minutes before midnight for nightly close-outs
Linux
Weekly Examples
Weekly cron jobs are perfect for weekly digests, Monday morning kickoff tasks, and weekend maintenance windows.
0 0 * * 0
Every Sunday at midnight
Also written as @weekly
Linux
0 9 * * 1
Every Monday at 9 AM
Weekly kickoff — great for sending Monday morning summaries
Linux
0 17 * * 5
Every Friday at 5 PM
End-of-week wrap-up report
Linux
0 9 * * 1-5
Every weekday at 9 AM (Mon–Fri)
Business days only
Linux
0 10 * * 6,0
Weekends only at 10 AM (Sat & Sun)
Weekend-specific processing
Linux
0 2 * * 0
Every Sunday at 2 AM
Weekly maintenance window — database optimization, index rebuilds
Linux
Not sure if your cron expression is right?
Paste it into CronRead and instantly see a human-readable explanation, the next 5 run times, and validation for both Linux and AWS formats.
Read & Validate Your Cron →
Monthly Examples
Monthly cron jobs are essential for billing cycles, monthly reports, archive generation, and data retention policies.
0 0 1 * *
First day of every month at midnight
Also written as @monthly
Linux
0 9 1 * *
First day of every month at 9 AM
Monthly report, invoice generation
Linux
0 0 15 * *
15th of every month at midnight
Mid-month billing check, payroll
Linux
0 0 1,15 * *
1st and 15th of every month at midnight
Bi-monthly: twice a month
Linux
0 0 28 * *
28th of every month at midnight
Safe last-of-month alternative (works in February too)
Linux
Advanced & Special Examples
0 0 1 1 *
Once a year — January 1st at midnight
Also written as @yearly or @annually
Linux
0 9 1 1,4,7,10 *
Quarterly — first day of Jan, Apr, Jul, Oct at 9 AM
Perfect for quarterly financial reports
Linux
0 8-18 * * 1-5
Every hour from 8 AM to 6 PM, weekdays only
Business hours monitoring
Linux
*/5 9-17 * * 1-5
Every 5 min, 9 AM–5 PM, Mon–Fri only
Business-hours high-frequency polling
Linux
0 0 * * 1#1
First Monday of every month at midnight
# notation (not all cron implementations support this)
Linux
AWS EventBridge Specific Examples
AWS EventBridge uses a 6-field format wrapped in cron(). The fields are: Minutes Hours Day-of-month Month Day-of-week Year. Note that one of Day-of-month or Day-of-week must always be ?.
⚠ AWS Cron is Different
Don't paste Linux cron expressions directly into AWS EventBridge. The field order looks similar but there are critical differences: Sunday = 1 (not 0), an extra Year field, and the
? rule for DOM/DOW. Always verify when migrating.
cron(*/5 * * * ? *)
Every 5 minutes
AWS format with required ? for day-of-week
AWS Only
cron(0 * * * ? *)
Every hour at :00
Hourly in AWS EventBridge format
AWS Only
cron(0 0 * * ? *)
Every day at midnight UTC
Daily AWS job
AWS Only
cron(0 9 ? * MON-FRI *)
Weekdays at 9 AM UTC
? is on Day-of-month since we specified Day-of-week
AWS Only
cron(0 0 1 * ? *)
First of every month at midnight UTC
Monthly job in AWS format
AWS Only
cron(0 0 L * ? *)
Last day of every month at midnight
L = last day — very useful for end-of-month billing
AWS Only
cron(0 9 ? * 2#1 *)
First Monday of every month at 9 AM
2#1 = Monday (#1 = first occurrence). In AWS, MON=2
AWS Only
cron(0 0 1 1,4,7,10 ? *)
Quarterly — Jan, Apr, Jul, Oct 1st at midnight
Q1/Q2/Q3/Q4 trigger
AWS Only
cron(0 0 1 1 ? 2027)
One-time: Jan 1, 2027 at midnight
AWS supports scheduled one-time future events via Year field
AWS Only
💡 CronRead Supports Both Formats
Our cron generator at
CronRead.com generates expressions in both Linux 5-field format and AWS EventBridge 6-field format. Including the 6th Year field and the
cron() wrapper that AWS requires.
Real-World Scenario Examples
Here are complete real-world scenarios with the exact cron expression you'd use:
📧 Daily Email Digest at 7 AM
# Linux
0 7 * * * /path/to/send_digest.sh
# AWS EventBridge
cron(0 7 * * ? *)
🗄 Database Backup Every Night at 2 AM
# Linux
0 2 * * * /scripts/backup_db.sh >> /var/log/backup.log 2>&1
# AWS EventBridge (triggers Lambda)
cron(0 2 * * ? *)
📊 Weekly Report Every Monday at 8 AM
# Linux
0 8 * * 1 python3 /scripts/generate_weekly_report.py
# AWS EventBridge
cron(0 8 ? * MON *)
🧹 Clear Temp Files Every Sunday Night
# Linux
0 23 * * 0 find /tmp -type f -mtime +7 -delete
# AWS EventBridge
cron(0 23 ? * SUN *)
💳 Monthly Invoice Generation (1st of month)
# Linux
0 6 1 * * node /app/generate-invoices.js
# AWS EventBridge
cron(0 6 1 * ? *)
🔄 API Data Sync Every 15 Minutes, Business Hours Only
# Linux — every 15 min, 8 AM to 8 PM, weekdays
*/15 8-20 * * 1-5 python3 /scripts/sync_api.py
# AWS EventBridge (no time-range filtering in cron — use Lambda logic)
cron(*/15 * ? * MON-FRI *) # run every 15 min on weekdays, filter hours in code
🔐 SSL Certificate Renewal Check (Monthly)
# Linux — 1st of month at 3 AM
0 3 1 * * /usr/local/bin/certbot renew --quiet
# AWS EventBridge
cron(0 3 1 * ? *)
📦 Quarterly Data Archive (Q1/Q2/Q3/Q4)
# Linux — 1st of Jan, Apr, Jul, Oct at midnight
0 0 1 1,4,7,10 * /scripts/archive_data.sh
# AWS EventBridge
cron(0 0 1 1,4,7,10 ? *)
⚙ Build any of these expressions visually
Don't want to write cron syntax by hand? Use CronRead's visual generator to build the exact expression you need — with a plain-English preview of when it will run.
Open Free Cron Generator →
Quick Reference: Linux vs AWS Format
| Goal | Linux Crontab | AWS EventBridge |
| Every 5 minutes | */5 * * * * | cron(*/5 * * * ? *) |
| Every hour | 0 * * * * | cron(0 * * * ? *) |
| Daily midnight | 0 0 * * * | cron(0 0 * * ? *) |
| Weekdays 9 AM | 0 9 * * 1-5 | cron(0 9 ? * MON-FRI *) |
| Monthly 1st | 0 0 1 * * | cron(0 0 1 * ? *) |
| First Mon of month | 0 0 * * 1#1 | cron(0 0 ? * 2#1 *) |
| Last day of month | Varies by OS | cron(0 0 L * ? *) |
| Once a year | 0 0 1 1 * | cron(0 0 1 1 ? *) |