Cron Cheatsheet

Cron is most suitable for scheduling repetitive tasks. Scheduling one-time tasks can be accomplished using the associated at utility.

Crontab Format

Format

Min  Hour Day  Mon  Weekday

*    *    *    *    *  command to be executed
┬    ┬    ┬    ┬    ┬
│    │    │    │    └─  Day of Week   (0=Sun .. 6=Sat)
│    │    │    └──────  Month         (1..12)
│    │    └───────────  Day of Month  (1..31)
│    └────────────────  Hour          (0..23)
└─────────────────────  Minute        (0..59)

FieldRangeSpecial characters
Minute
0 - 59
, - * /
Hour
0 - 23
, - * /
Day of Month
1 - 31
, - * ? / L W
Month
1 - 12
, - * /
Day of Week
0 - 6
, - * ? / L #

Examples

ExampleDescription
*/15 * * * *
Every 15 mins
0 * * * *
Every hour
0 */2 * * *
Every 2 hours
15 2 * * *
At 2:15AM (of every day)
15 2 * * ?
At 2:15AM (of every day)
10 9 * * 5
At 9:10AM (of every Friday)
0 0 * * 0
At 12:00 AM, only on Sunday
15 2 * * 1L
At 2:15am on the last monday of every month
15 0 * * 4#2
At 00:15am on the second thursday of every month
0 0 1 * *
At 12:00 AM, on day 1 of the month (1st of month / monthly)
0 0 1 1 *
At 12:00 AM, on day 1 of the month, only in January (1st of month)
@reboot
Every reboot
(non-standard)

Cron Generator

0 12 * * *

Every day at 12:00 PM

Special strings

Special StringMeaning
@reboot
Run once, at system startup (non-standard)
@yearly
Run once every year, "0 0 1 1 *" (non-standard)
@annually
(same as @yearly) (non-standard)
@monthly
Run once every month, "0 0 1 * *" (non-standard)
@weekly
Run once every week, "0 0 * * 0" (non-standard)
@daily
Run once each day, "0 0 * * *" (non-standard)
@midnight
(same as @daily) (non-standard)
@hourly
Run once an hour, "0 * * * *" (non-standard)

Crontab command

crontab -e
Edit or create a crontab file if doesn’t already exist.
crontab -l
Display the crontab file.
crontab -r
Remove the crontab file.
crontab -v
Display the last time you edited your crontab file.
(non-standard)

Special characters

Special CharacterDescription
Asterik(*)
Matches all values in the field or any possible value.
Hyphen(-)
Used to define a range.Ex: 1-5 in 5th field(Day Of Week) Every Weekday i.e., Monday to Friday
Slash (/)
1st field(Minute) /15 meaning every fifteen minute or increment of range.
Comma (,)
Used to separate items.Ex: 2,6,8 in 2nd fields(Hour) executes at 2am,6am and 8am
L
It is allowed only for Day of Month or Day Of Week field, 2L in Day of week indicates Last tuesday of every month
Hash (#)
It is allowed only for Day Of Week field, which must be followed within range of 1 to 5. For example, 4#1 means "The first Thursday" of given month.
Question mark (?)
Can be instead of '*' and allowed for Day of Month and Day Of Week. Usage is restricted to either Day of Month or Day Of Week in a cron expression.

Also see

Adapted from Fechin/referenceGPL-3.0 licenseMarkdown sourceChanges and attribution