From NixOS Wiki
Jump to: navigation, search

Timers are systemd unit files whose name ends in .timer that control .service files or events. Timers can be used as an alternative to cron. Timers have built-in support for calendar-based events and monotonic time events, and can be run asynchronously.


The following example timer runs a systemd unit every 5 minutes which invokes a bash script.

systemd.timers."hello-world" = {
  wantedBy = [ "" ];
    timerConfig = {
      OnBootSec = "5m";
      OnUnitActiveSec = "5m";
      Unit = "hello-world.service";
};"hello-world" = {
  script = ''
    set -eu
    ${pkgs.coreutils}/bin/echo "Hello World"
  serviceConfig = {
    Type = "oneshot";
    User = "root";

The following example starts once a day (at 12:00am). When activated, it triggers the service immediately if it missed the last start time (option Persistent=true), for example due to the system being powered off.

  timerConfig = {
      OnCalendar = "daily";
      Persistent = true; 

More examples can be found at the Arch Wiki and at the systemd.timer manpage.


List active timers and their current state:

systemctl list-timers

Manually run a service once for testing purposes:

systemctl start hello-world