Cron Expression Syntax Cheatsheet

ztn.sh healthchecks understands most of the traditional cron syntax features. Under the hood, it uses the cronsim package to parse and interpret cron expressions. Below is a showcase of supported syntax features.

Pro-tip! On Unix-like operating systems, you can also easily access cron syntax documentation by typing man 5 crontab in shell.


Basics

A cron expression has five fields, separated by spaces. Asterisk is a wild card character and means "any value."

"Run every minute"
*
*
*
*
*
Day of week, 0 - 7, 0 or 7 is Sun
Month, 1 - 12
Day of month, 1 - 31
Hour of day, 0 - 23
Minute, 0 - 59

Numeric values

Use numeric values instead of asterisks to match specific minutes, hours, days, and months.

"Run at 6 PM on Fridays"
0
18
*
*
5
Run only on Fridays
Run every month of the year
Run every day of the month
Run at 6 PM
Run at the start of the hour

Commas

Use {v1},{v2},...,{vn} to list multiple values.

"Run at 9 AM, 12 PM, and 6 PM every day"
0
9,12,18
*
*
*
Run on every weekday
Run every month of the year
Run every day of the month
Run at 9 AM, 12 PM and 6 PM
Run at the start of the hour

Ranges of values

Use {start}-{end} to define a range of matching values.

"Run every minute on workdays"
*
*
*
*
1-5
Run from Monday to Friday
Run every month of the year
Run every day of the month
Run every hour of the day
Run every minute of the hour

Ranges with a step

Use {start}-{end}/{step} or */{step} to define a range with a step.

"Run every quarter of an hour"
*/15
*
*
*
*
Run on every weekday
Run every month of the year
Run every day of the month
Run every hour of the day
Run every 15 minutes

Combine numeric values and ranges in lists

In the comma-separated lists, you can combine not only numeric values but also ranges.

"Run every round hour outside office hours"
0
18-23,0-8
*
*
*
Run on every weekday
Run every month of the year
Run every day of the month
Run at 6 PM, 7 PM, 8 PM, ..., 7 AM, 8 AM
Run at the start of the hour

Abbreviated day and month names

JAN-DEC can be used in the month field and MON-SUN in the weekday field.

"Run every round hour on April 1st"
0
*
1
APR
*
Run on every weekday
Run in April
Run on the first day of the month
Run every hour of the day
Run at the start of the hour

Timezones

The cron daemon uses the server's local time. If your server's timezone is other than UTC, make sure to set a matching timezone for your check on ztn.sh healthchecks as well.

On Ubuntu systems, you can check the server's timezone with:

cat /etc/timezone

Cron Expression Tester

Type or paste any cron expression:

Common Cron Expressions

Every minute * * * * *
Every 5 minutes */5 * * * *
Every 15 minutes */15 * * * *
Every 30 minutes */30 * * * *
Every hour 0 * * * *
At 30 minutes past every hour 30 * * * *
Every 2 hours 0 */2 * * *
Every 3 hours 0 */3 * * *
Every 6 hours 0 */6 * * *
At 3 AM every day 0 3 * * *
At 3 AM every Monday 0 3 * * MON
At 8 AM, only on workdays 0 8 * * 1-5
At the midnight of the first day of every month 0 0 1 * *
At the start of every third month 0 0 1 */3 *