DeveloperSeptember 28, 2025·6 min read

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?

ExpressionPlain EnglishUse case
* * * * *Every minuteTesting only — never use in production; will overwhelm most systems
*/5 * * * *Every 5 minutesHealth checks, uptime monitoring, short-lived cache refreshes
*/10 * * * *Every 10 minutesRSS feed polling, lightweight API sync
*/15 * * * *Every 15 minutesSearch index updates, webhook retries, queue processing
*/30 * * * *Every 30 minutesAnalytics aggregation, report pre-computation
0 * * * *Every hour at minute 0Hourly reports, data ingestion, batch processing
7 * * * *Every hour at minute 7Offset 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?

ExpressionPlain EnglishUse case
0 0 * * *Every day at midnight UTCDatabase backups, log rotation, daily cleanup
0 2 * * *Every day at 2:00 AM UTCBackups during low-traffic hours
0 6 * * *Every day at 6:00 AM UTCPre-business-hours data refresh, report generation
0 9 * * *Every day at 9:00 AM UTCDaily digest email to users
0 18 * * *Every day at 6:00 PM UTCEnd-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?

ExpressionPlain EnglishUse case
0 0 * * 0Every Sunday at midnightWeekly full database backup, weekly data export
0 9 * * 1Every Monday at 9:00 AMWeekly team digest, Monday morning reports
30 8 * * 1Every Monday at 8:30 AMWeekly newsletter, pre-standup data pull
0 9 * * 5Every Friday at 9:00 AMEnd-of-week summary reports
0 9 * * 1-5Weekdays at 9:00 AMBusiness-hours-only jobs (jobs that should not run on weekends)
0 0 * * 6,0Midnight on Saturday and SundayWeekend batch processing when traffic is low

What are common monthly cron job examples?

ExpressionPlain EnglishUse case
0 0 1 * *Midnight on the 1st of each monthMonthly invoicing, subscription billing, monthly reports
0 9 1 * *9:00 AM on the 1st of each monthMonthly statement emails, usage reports
0 0 15 * *Midnight on the 15th of each monthMid-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?

ExpressionPlain EnglishUse 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 1Explicit quarterly schedule — more reliable than */3
0 0 1 1 *Midnight on January 1stAnnual 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
fi

Key takeaways

  • Offset hourly jobs from the top of the hour (7 * * * * instead of 0 * * * *) 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
Tags:croncron jobcron examplescrontabschedulinglinux