Cron explainer

When does it run?

Linux crontab syntax: minute, hour, day of month, month, day of week. Calculated in your browser.

At 00:00, on day 1 of the month, in January, April, July and October

0Minute
0Hour
1Day of month
1,4,7,10Month
*Day of week

Next runs (Europe/Vienna)

  1. Fri 2027-01-01 00:00
  2. Thu 2027-04-01 00:00
  3. Thu 2027-07-01 00:00
  4. Fri 2027-10-01 00:00
  5. Sat 2028-01-01 00:00
  6. Sat 2028-04-01 00:00
  7. Sat 2028-07-01 00:00
  8. Sun 2028-10-01 00:00
  9. Mon 2029-01-01 00:00
  10. Sun 2029-04-01 00:00

Times skipped by a daylight-saving change are not listed (cronie runs them right after the switch).

Details

Minute0
Hour0
Day of month1
Month1,4,7,10every 3
Day of week*every

systemd timer

OnCalendar=*-01/3-01 00:00:00

Syntax

┌───────────── minute        0–59
│ ┌─────────── hour          0–23
│ │ ┌───────── day of month  1–31
│ │ │ ┌─────── month         1–12 or JAN–DEC
│ │ │ │ ┌───── day of week   0–7 or SUN–SAT (0 and 7 = Sunday)
│ │ │ │ │
* * * * *  command
*
every value
1,15
list
1-5
range
*/15
every 15th value (0, 15, 30, 45)
8-17/2
every 2nd value within a range
@daily
@hourly, @daily, @weekly, @monthly, @yearly, @reboot

If both day of month and day of week are restricted, cron runs when either matches. Cron uses the server's time zone (or CRON_TZ= in the crontab).

Same in the terminal

$ curl tools.otw.solutions/cron/0_0_1_1,4,7,10_*

Or with spaces: curl "tools.otw.solutions/cron?e=0+3+*+*+1-5" · JSON: add ?format=json