Common Schedules
8
ExpressionDescriptionTryCopy
* * * * *Every minuteTry
*/5 * * * *Every 5 minutesTry
0 * * * *Every hour (on the hour)Try
0 9 * * *Every day at 9:00 AMTry
0 9 * * 1-5Weekdays at 9:00 AMTry
0 0 * * 0Every Sunday at midnightTry
0 0 1 * *First of every month at midnightTry
0 0 1 1 *January 1st yearly at midnightTry
Step Values
7
ExpressionDescriptionTryCopy
*/15 * * * *Every 15 minutesTry
*/30 * * * *Every 30 minutesTry
0 */2 * * *Every 2 hoursTry
0 9-17 * * 1-5Business hours weekdays (9 AM–5 PM)Try
0 0 */7 * *Every 7 days (weekly at midnight)Try
*/15 9-17 * * 1-5Every 15 min during business hoursTry
0 9-17/2 * * *Every 2 hours from 9 AM to 5 PMTry
Ranges & Lists
8
ExpressionDescriptionTryCopy
0 8,12,18 * * *Three times a day (8 AM, noon, 6 PM)Try
0 9 * * 1,3,5Mon, Wed, Fri at 9:00 AMTry
30 23 L * *Last day of month at 23:30Try
0 0 1,15 * *1st and 15th of every monthTry
30 6 * * 1,3,56:30 AM on Mon, Wed, FriTry
0 12 15 * *Noon on the 15th of every monthTry
0 0 * 6-8 *Midnight every day in June, July, AugustTry
0 0 * 1,4,7,10 *Midnight on the 1st of quarterly monthsTry
Common Cron Jobs
8
ExpressionDescriptionTryCopy
0 2 * * *Daily backup at 2:00 AMTry
0 0 * * 1Every Monday at midnightTry
0 6 * * *Daily at 6:00 AMTry
0 0 * * 0,6Weekends at midnightTry
0 9,17 * * 1-59 AM and 5 PM on weekdaysTry
0 23 * * *Nightly at 11:00 PMTry
5 4 * * 0Weekly report — Sunday at 4:05 AMTry
0 4 1 * *Monthly cleanup — 1st at 4:00 AMTry

Cron Expression Reference

Cron Format Overview

bash
# Cron expression format:
# ┌───────────── minute (0–59)
# │ ┌───────────── hour (0–23)
# │ │ ┌───────────── day of month (1–31)
# │ │ │ ┌───────────── month (1–12)
# │ │ │ │ ┌───────────── day of week (0–6, Sun=0)
# │ │ │ │ │
# * * * * *

# Every minute
* * * * *

# Every 5 minutes
*/5 * * * *

# At 9:00 AM on weekdays
0 9 * * 1-5

# First of every month at midnight
0 0 1 * *

Field Definitions

PositionFieldAllowed ValuesSpecial Characters
1Minute0 – 59* , - /
2Hour0 – 23* , - /
3Day of Month1 – 31* , - / ? L W
4Month1 – 12* , - / (or Jan–Dec names)
5Day of Week0 – 6* , - / ? L # (0 and 7 = Sunday)

Special Characters

CharacterNameSupported InDescription
*WildcardAll fieldsMatch any value. * in minute = every minute.
,ListAll fieldsEnumerate specific values. 1,15,30 in minute = at those exact minutes.
-RangeAll fieldsInclusive range. 9-17 in hour = from 9:00 to 17:00.
/StepAll fieldsStep through values. */5 = every 5 units. 10-50/10 = 10, 20, 30, 40, 50.
?No valueDOM / DOWUsed when you specify DOM or DOW but not both. Not in standard Unix cron.
LLastDOM / DOWL in DOM = last day of month. 5L in DOW = last Friday. Quartz only.
WWeekdayDOMNearest weekday to given day. 15W = nearest weekday to 15th. Quartz only.
#Nth dayDOWNth occurrence of day. 5#3 = 3rd Friday. Quartz only.

Step and Range Examples

bash
# Step values with /
*/5  * * * *   # Every 5 minutes (0, 5, 10, ..., 55)
*/15 * * * *   # Every 15 minutes (0, 15, 30, 45)
0 */2 * * *    # Every 2 hours (0:00, 2:00, 4:00, ...)
0 9-17/2 * * * # Every 2 hours from 9 AM to 5 PM

# Range examples with -
0 9-17 * * *   # Every hour from 9 AM to 5 PM
0 0 * * 1-5    # Midnight on weekdays
0 0 * 6-8 *    # Midnight every day in Jun, Jul, Aug

List Examples

bash
# List values with ,
0 9,12,18 * * *      # At 9:00, 12:00, 18:00 every day
30 6 * * 1,3,5       # 6:30 AM on Mon, Wed, Fri
0 0 1,15 * *         # Midnight on the 1st and 15th of each month
0 0 * 1,4,7,10 *     # Midnight on the 1st day of quarterly months

@Alias Shortcuts

AliasEquivalentWhen It Runs
@yearly / @annually0 0 1 1 *January 1st at midnight, once per year
@monthly0 0 1 * *1st day of every month at midnight
@weekly0 0 * * 0Every Sunday at midnight
@daily / @midnight0 0 * * *Every day at midnight (00:00)
@hourly0 * * * *Every hour at the start of the hour (:00)
@reboot(special)Once at system startup — not supported everywhere

Common Examples

ExpressionDescription
* * * * *Every minute
*/5 * * * *Every 5 minutes
*/15 * * * *Every 15 minutes
*/30 * * * *Every 30 minutes
0 * * * *Every hour at :00
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Every weekday at 9:00 AM
0 9,17 * * 1-5At 9 AM and 5 PM on weekdays
*/15 9-17 * * 1-5Every 15 min during business hours (weekdays)
0 0 * * 0Every Sunday at midnight
0 0 1 * *1st of every month at midnight
0 0 1 1 *January 1st at midnight (yearly)
0 0 * * 1Every Monday at midnight
30 6 * * 1,3,56:30 AM on Mon, Wed, Fri
0 12 15 * *Noon on the 15th of every month
0 2 * * *Every day at 2:00 AM (common for backups)
0 0 * 6-8 *Midnight every day in June, July, August
0 0 1,15 * *Midnight on the 1st and 15th of each month
@dailyEvery day at midnight (alias for 0 0 * * *)
@weeklyEvery Sunday at midnight (alias for 0 0 * * 0)

Month and Day Name Abbreviations

NumberMonth
1January (Jan)
2February (Feb)
3March (Mar)
4April (Apr)
5May
6June (Jun)
7July (Jul)
8August (Aug)
9September (Sep)
10October (Oct)
11November (Nov)
12December (Dec)
NumberDay
0 or 7Sunday (Sun)
1Monday (Mon)
2Tuesday (Tue)
3Wednesday (Wed)
4Thursday (Thu)
5Friday (Fri)
6Saturday (Sat)

Common Mistakes

MistakeWrongCorrectExplanation
0-indexed day of week1 = Sunday0 = SundayDays of week start at 0 (Sunday). Monday is 1, Saturday is 6.
1-indexed month0 = January1 = JanuaryMonths are 1-indexed. January = 1, December = 12.
DOM + DOW OR logicExpects ANDUses ORIf both DOM and DOW are specified, cron fires when EITHER matches, not both.
Minimum intervalSecondsMinutesStandard cron minimum granularity is 1 minute. Use systemd or another tool for sub-minute.
Year fieldAdding 6th fieldUse 5 fieldsStandard cron has 5 fields. Some systems (Quartz) add a seconds field at position 1 or a year field at position 6.
TimezoneAssuming local timeCheck server TZCron runs in the server's timezone (often UTC in cloud environments). Set TZ explicitly if needed.

Cron in Different Systems

SystemFieldsNotes
Unix/Linux cron5 (min hr dom mon dow)Standard — no seconds field, no year field
Vixie cron5Most common Unix cron daemon; supports @aliases
Quartz Scheduler6–7 (sec min hr dom mon dow [year])Java scheduler — adds seconds and optional year
AWS EventBridge6 (min hr dom mon dow year)Adds year field; uses ? for no-value in dom/dow
Kubernetes CronJob5 (standard)Standard 5-field cron; no seconds field; TZ via .spec.timeZone
GitHub Actions5 (standard)Minimum interval is every 5 minutes; no @aliases
systemd timersCalendar eventsDifferent syntax: OnCalendar=*:0/5 for every 5 min

Frequently Asked Questions

Linux cron uses 5 fields (minute, hour, dom, month, dow). Quartz Scheduler (Java) uses 6–7 fields adding a seconds field at the beginning and an optional year field at the end. The day-of-week values also differ: Quartz uses 1–7 where 1=Sunday, while Linux cron uses 0–6 or 0–7 where 0=Sunday.

Standard cron runs in the system timezone. In Linux, you can prefix the crontab entry with CRON_TZ=America/New_York (supported by Vixie cron and systemd). In Kubernetes, use .spec.timeZone in your CronJob spec. In AWS EventBridge, you can specify the timezone in the schedule expression.

The ? character is not supported by standard Unix cron — it is a Quartz Scheduler extension. It means 'no specific value' and is used in day-of-month or day-of-week to avoid conflict when you specify one but not the other. AWS EventBridge also supports ?.

Use: 30 9 * * 1-5 — this runs at 9:30 AM (minute=30, hour=9) every day from Monday (1) through Friday (5).

No — standard Unix cron has a minimum granularity of 1 minute. For sub-minute scheduling, use systemd timers (OnCalendar=*:*:0/30 for every 30 seconds), Quartz Scheduler with the seconds field, or a background loop in your application code.

Related Tools