Navigate back to the homepage

Systemd timers onCalendar (cron) format explained

Divyansh Tripathi
October 10th, 2021 · 2 min read

In this blog we are going to learn the format of systemd timers and their onCalendar field. You can find what systemd timers are and why they are a better alternative to cron over here

Systemd Timer OnCalendar Format vs Cronjob format

Cronjob format

1* * * * *
2minute hours day-of-the-month month day-of-the-week

So for example if we want a job to run every time it is midnight. We will set minute to 00 and hours to 00 and everything else as it is, That will give us -

100 00 * * *
2# every day midnight

Similarly if we want it to to be every weekday(range) midnight it will be

100 00 * * 1-5
2# every day midnight

And the last concept in this is repition what if we want a job to run every n minutes. Then we use this format.

1*/n * * * *
2# every n minutes

Similarly these repititions can be use for any of the 5 fields along with absolute time.

Systemd Timer OnCalendar Format

Now that you know the basics of corn format it will be easier for you to understand the OnCalendarfomat which gives you more granularity and control.

So the basic format of Oncalnedar event is this -

1* *-*-* *:*:*

It is divided into 3 parts -

  • * - To signify the day of the week eg:- Sat,Thu,Mon

  • *-*-* - To signify the calendar date. Which means it breaks down to - year-month-date.

    • 2021-10-15 is 15th of October
    • *-10-15 means every year at 15th October
    • *-01-01 means every new year.
  • *:*:* is to signify the time component of the calnedar event. So it is - hour:minute:second

Note- Unlike cronjob we can skip a component of oncalendarevent if we don’t have any modifications for it.

Which means -

1Wed *-*-* 17:48:00
2#Can also be written as ->
3Wed, 17:48

Now onCalendar also abides all the rules of the cron format. So we will go into each concept one by one.

Systmed Timers which run on a specified point in time

This is fairly simple just fill the below fields with you desired point in time.

1* *-*-* *:*:*
2#Day Of the week Year-Month-Date Hour:Minute:Second

Examples Shown at the end of the blog in TL;DR

Systemd Timers Oncalendar Examples which run in a given frequency

So as we used / for frequency in cron job we do the same here.

So for example for every 2 day we say

1*/1 *-*-* *:*:*

Similarly we can set the intitial period also. So every days starting from Monday would be -

1Mon/1 *-*-* *:*:*

And we can set range for the frquency to run on, So everyday but only weekday would be

1Mon,Tue,Wed,Thu,Fri *-*-* *:*:*

So Systemd Timers Oncalendar range examples and normal examples are given in the table below. Use the calendar command of systemd-analyze to validate and normalize calendar time specifications for testing purposes. The tool also calculates when a specified calendar event would occur next.


TL; DR (If you want to learn you can browse down too)

ExplainationSystemd timer
Every Minute*-*-* *:*:00
Every 2 minute*-*-* *:*/2:00
Every 5 minutes*-*-* *:*/5:00
Every 15 minutes*-*-* *:*/15:00
Every quarter hour*-*-* *:*/15:00
Every 30 minutes*-*-* *:*/30:00
Every half an hour*-*-* *:*/30:00
Every 60 minutes*-*-* */1:00:00
Every 1 hour*-*-* *:00:00
Every 2 hour*-*-* */2:00:00
Every 3 hour*-*-* */3:00:00
Every other hour*-*-* */2:00:00
Every 6 hour*-*-* */6:00:00
Every 12 hour*-*-* */12:00:00
Hour Range*-*-* 9-17:00:00
Between certain hours*-*-* 9-17:00:00
Every day*-*-* 00:00:00
Daily*-*-* 00:00:00
Once A day*-*-* 00:00:00
Every Night*-*-* 01:00:00
Every Day at 1am*-*-* 01:00:00
Every day at 2am*-*-* 02:00:00
Every morning*-*-* 07:00:00
Every midnight*-*-* 00:00:00
Every day at midnight*-*-* 00:00:00
Every night at midnight*-*-* 00:00:00
Every sundaySun *-*-* 00:00:00
Every fridayFri *-*-* 01:00:00
Every friday at midnightFri *-*-* 00:00:00
Every saturdaySat *-*-* 00:00:00
Every weekdayMon...Fri *-*-* 00:00:00
weekdays onlyMon...Fri *-*-* 00:00:00
monday to fridayMon...Fri *-*-* 00:00:00
Every weekendSat,Sun *-*-* 00:00:00
weekends onlySat,Sun *-*-* 00:00:00
Every 7 days* *-*-* 00:00:00
Every weekSun *-*-* 00:00:00
weeklySun *-*-* 00:00:00
once a weekSun *-*-* 00:00:00
Every month* *-*-01 00:00:00
monthly* *-*-01 00:00:00
once a month* *-*-01 00:00:00
Every quarter* *-01,04,07,10-01 00:00:00
Every 6 months* *-01,07-01 00:00:00
Every year* *-01-01 00:00:00

Join my email list and get notified about new content

I promise I won't spam or unnecesarily promotional emails through this mailing list. You might also get chance to be eligible for my monthly giveaways. Also I promise to not spam your inbox or share your email with any third parties.

More articles from Silentlad

How to use systemd timers (cronjob alternative)

Learn how and why to use systemd timers to schedule scripts, jobs on your unix based systems

October 7th, 2021 · 2 min read

Frosted glass effect using CSS

Learn how to make a frosted glass panel effect using only css

September 23rd, 2021 · 2 min read
© 2018–2021 SilentladSitemapRSS feed
Link to $ to $ to $ to $ to $ to $