20 Cron Job Examples for Common Schedules
20 ready-to-use cron expressions for common schedules — every minute, hourly, daily, weekly, monthly, quarterly, and annual jobs — with plain-English descriptions and the use case each serves.
The fastest way to write a correct cron expression is to find a working example close to your schedule and adapt it. This reference covers 20 common cron schedules grouped by frequency — from every-minute health checks to annual year-end jobs — with the expression, plain-English description, and the use case it serves.
For a complete explanation of cron syntax including wildcards, step values, and ranges, see the complete cron expression syntax guide. To build expressions visually with next-run-time preview, use the Cron Job Generator.
What are the most common every-hour and every-minute cron schedules?
| Expression | Plain English | Use case |
|---|---|---|
* * * * * | Every minute | Testing only — never use in production; will overwhelm most systems |
*/5 * * * * | Every 5 minutes | Health checks, uptime monitoring, short-lived cache refreshes |
*/10 * * * * | Every 10 minutes | RSS feed polling, lightweight API sync |
*/15 * * * * | Every 15 minutes | Search index updates, webhook retries, queue processing |
*/30 * * * * | Every 30 minutes | Analytics aggregation, report pre-computation |
0 * * * * | Every hour at minute 0 | Hourly reports, data ingestion, batch processing |
7 * * * * | Every hour at minute 7 | Offset from the top of the hour to spread load across systems |
Pro tip — offset from the hour: Using 7 * * * * or23 * * * * instead of 0 * * * * prevents multiple cron jobs from spiking CPU and database connections simultaneously at the top of every hour. Stagger jobs by 5–15 minutes when you have multiple hourly tasks.
What are common daily cron job examples?
| Expression | Plain English | Use case |
|---|---|---|
0 0 * * * | Every day at midnight UTC | Database backups, log rotation, daily cleanup |
0 2 * * * | Every day at 2:00 AM UTC | Backups during low-traffic hours |
0 6 * * * | Every day at 6:00 AM UTC | Pre-business-hours data refresh, report generation |
0 9 * * * | Every day at 9:00 AM UTC | Daily digest email to users |
0 18 * * * | Every day at 6:00 PM UTC | End-of-business-day summaries |
0 0 * * * | Midnight daily (with TZ) | Add TZ=America/New_York to run at midnight Eastern |
Important: Cloud servers run UTC by default. "9:00 AM" in a cron expression means 9:00 AM UTC — which is 4:00 AM EST or 1:00 AM PST. Always calculate the UTC equivalent of your intended local time, or set the TZ variable at the top of your crontab. For a full explanation of the timezone problem and how to fix it, see debugging cron jobs that run at the wrong time.
What are common weekly cron job examples?
| Expression | Plain English | Use case |
|---|---|---|
0 0 * * 0 | Every Sunday at midnight | Weekly full database backup, weekly data export |
0 9 * * 1 | Every Monday at 9:00 AM | Weekly team digest, Monday morning reports |
30 8 * * 1 | Every Monday at 8:30 AM | Weekly newsletter, pre-standup data pull |
0 9 * * 5 | Every Friday at 9:00 AM | End-of-week summary reports |
0 9 * * 1-5 | Weekdays at 9:00 AM | Business-hours-only jobs (jobs that should not run on weekends) |
0 0 * * 6,0 | Midnight on Saturday and Sunday | Weekend batch processing when traffic is low |
What are common monthly cron job examples?
| Expression | Plain English | Use case |
|---|---|---|
0 0 1 * * | Midnight on the 1st of each month | Monthly invoicing, subscription billing, monthly reports |
0 9 1 * * | 9:00 AM on the 1st of each month | Monthly statement emails, usage reports |
0 0 15 * * | Midnight on the 15th of each month | Mid-month billing cycle jobs |
0 0 L * * | Last day of each month (some implementations) | Month-end closing jobs — verify your cron supports L |
What are examples of quarterly and annual cron jobs?
| Expression | Plain English | Use case |
|---|---|---|
0 0 1 */3 * | Midnight on the 1st of every 3rd month (Jan, Apr, Jul, Oct) | Quarterly reports, Q1/Q2/Q3/Q4 processing |
0 0 1 1,4,7,10 * | Midnight on January 1, April 1, July 1, October 1 | Explicit quarterly schedule — more reliable than */3 |
0 0 1 1 * | Midnight on January 1st | Annual year-end processing, yearly data archiving |
How do you run a cron job only on the first Monday of the month?
Standard cron cannot express "first Monday of the month" directly — when both the day-of-month and day-of-week fields are set (not *), most cron implementations use OR logic, not AND. The workaround is to use a script-level check:
# Run on all Mondays, but check day of month inside the script
0 9 * * 1 /path/to/script.sh
# Inside script.sh:
if [ $(date +%d) -le 7 ]; then
# Only runs if today is the 1st through 7th — first Monday only
run_monthly_job
fiKey takeaways
- Offset hourly jobs from the top of the hour (
7 * * * *instead of0 * * * *) to prevent simultaneous load spikes. - All cron times on cloud servers are UTC by default — calculate your UTC equivalent or set
TZ=in crontab. - For "first Monday of the month," use a script-level date check — cron's OR logic for day fields makes this impossible to express natively.
- Use the Cron Job Generator to validate any expression and see the next 5 run times before deploying.
- For the complete syntax reference including wildcards, step values, and ranges, see the cron expression syntax guide.
Frequently asked questions
How do I run a cron job every 2 hours?
Use 0 */2 * * * — this fires at 0:00, 2:00, 4:00, 6:00...22:00 UTC. The */2 means "every 2 hours starting from 0." If you want it to start at 1:00 AM instead, use 0 1-23/2 * * *.
How do I run a cron job on the last day of the month?
Standard five-field cron does not natively support "last day of month." The cleanest workaround: run daily and check inside the script whether tomorrow is the 1st of the next month — if so, execute the month-end logic. Some cron implementations (Quartz Scheduler, cloud schedulers) support an L character for last day.
What is the cron expression to run at midnight every Sunday?
0 0 * * 0 — minute 0, hour 0, any day of month, any month, day-of-week 0 (Sunday). Note: both 0 and 7 represent Sunday in cron.
How do I test a cron expression without waiting for the scheduled time?
Use the Cron Job Generator to see the next 5 scheduled run times. For live testing, temporarily change the expression to * * * * * (every minute), confirm the job fires and succeeds, then restore the original schedule. Always add output logging (>> /var/log/myjob.log 2>&1) so you can confirm execution.
Free tool
Try the Cron Job Generator
Use our free cron job generator to calculate results instantly — no signup required.
Open Cron Job Generator →