I'm trying to make a systemd timer that runs every 15 minutes. Right now I have:

  • timer-fifteen.timer:

    Description=15min timer
  • timer-fifteen.target:

    Description=15min Timer Target

This runs over and over again without stopping. Does it need to be *:0,15,30,45:* instead? How can I make this work?

  • 4
    Doesn't your syntax mean every 15 seconds? Apr 27, 2014 at 18:04

2 Answers 2


Your syntax translates to every 15 seconds, if you want every 15 minutes, IMO the most readable way is:


An answer most similar to what you use in your question is:


More information:

  • 6
    OnCalendar=0/8:00:00 is correct for saying "run every 8 hours"?
    – shackra
    Dec 26, 2015 at 20:01
  • 4
    Yes. But you probably already know that by now. :) Jan 5, 2016 at 12:47
  • 1
    I didn't, but I used that anyway lol. Thank you for confirming!
    – shackra
    Jan 7, 2016 at 3:06
  • 1
    @DineshP.R. It is there. – “In the date and time specifications, any component may be specified as "*" in which case any value will match. Alternatively, each component can be specified as a list of values separated by commas. Values may also be suffixed with "/" and a repetition value, which indicates that the value itself and the value plus all multiples of the repetition value are matched. Each component may also contain a range of values separated by "..".” Sep 1, 2016 at 9:35
  • 16
    When specifying an interval, the output of systemd-analyze may come in handy, for example try systemd-analyze calendar *:0/15.
    – sebastian
    Mar 5, 2018 at 8:28

According to the systemd.time, the setting


translates exactly to


ie. it activates the unit exactly at the full hour, as well as at quarter past, half past and quarter to.

Depending on your service, this may not be what you want, nor what you need in all cases.

A timer that runs every 15 minutes – for example at 1:02, 1:17, 1:32, 1:47, 2:02, … – always depending on the time it was last run – can be accomplished with the systemd.timer setting


Now, you will also want the unit to start some time after boot (unless you want to activate the unit manually or have a dependency which does that), so you should maybe specify


to have the unit started 10 minutes after boot and then every 15 minutes after that first time.

Additionally, there is the setting OnUnitInactiveSec which starts counting the time after the service has stopped (or, more generally, the unit has inactivated).

  • 9
    Warning: OnUnitActiveSec seems to be pretty broken. Jan 24, 2019 at 19:51
  • 1
    Note that this is a monotonic timer -- it is relative to system uptime and not to real time. If your system slept every 5 minutes for 5 minutes, a 15 minute monotonic timer would run every 25-30 minutes.
    – Codebling
    Feb 20, 2023 at 20:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .