Use systemd timers as a replacement for cron: schedule services the same way you created them.

Create the timer

  • You need to create a .timer file in /etc/systemd/system/ with the same name as the service you want to schedule.
  • This is the basic content of a .timer file:
    Description=timer description


  • Description: timer description.


  • OnBootSec: Defines a timer relative to when the computer was booted up. If you only use a number, means “seconds”. These are some examples of time formats:
    • 50
    • 30s
    • 15min
    • 5h 30min
    • 1d
    • 1w
  • OnActiveSec: Defines a timer relative to the moment the timer unit is activated.
  • OnCalendar: This option use system clock and not an event to define when the service should start. Uses the following format:
    DayOfWeek Year-Month-Day Hour:Minute:Second
    # Run every day at 5 p.m.
    OnCalendar=*-*-* 17:00:00
    # Run first day of the month only if that day is Monday
    OnCalendar=Mon *-*-01 12:00:00
    # You can use shortcuts like:
  • Unit: You can define the unit you want to control if it has a different name than the timer.


  • WantedBy: intructions for the timer installation (systemctl enable). Typing would be fine for most cases. Services don’t need an [Install] section if they have a timer.

Start / Enable the timer

  • Reload systemd with sudo systemctl daemon-reload.
  • Like any other unit, you can type sudo systemctl start myservice.timer (replacing myservice with your timer name) to start the timer and sudo systemctl enable myservice.timer to enable the timer.