Systemd/timers: Difference between revisions
Appearance
	
	
 Make page translatable  | 
				|||
| Line 1: | Line 1: | ||
{{Systemd/breadcrumb}}  | {{Systemd/breadcrumb}}  | ||
Timers are systemd unit files whose name ends in .timer that control .service files or events. Timers can be used as an alternative to <code>cron</code>. Timers have built-in support for calendar-based events and monotonic time events, and can be run asynchronously.    | <translate>  | ||
Timers are systemd unit files whose name ends in .timer that control .service files or events. Timers can be used as an alternative to <code>cron</code>. Timers have built-in support for calendar-based events and monotonic time events, and can be run asynchronously.  | |||
</translate>  | |||
<translate>  | |||
== Configuration ==  | == Configuration ==  | ||
</translate>  | |||
<translate>  | |||
The following example timer runs a systemd unit every 5 minutes which invokes a bash script.  | The following example timer runs a systemd unit every 5 minutes which invokes a bash script.  | ||
</translate>  | |||
<syntaxHighlight lang="nix">  | <syntaxHighlight lang="nix">  | ||
systemd.timers."hello-world" = {  | systemd.timers."hello-world" = {  | ||
| Line 28: | Line 31: | ||
};  | };  | ||
</syntaxHighlight>  | </syntaxHighlight>  | ||
<translate>  | |||
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.  | 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.  | ||
</translate>  | |||
<syntaxHighlight lang="nix">  | <syntaxHighlight lang="nix">  | ||
...  | ...  | ||
| Line 39: | Line 42: | ||
};  | };  | ||
</syntaxHighlight>  | </syntaxHighlight>  | ||
<translate>  | |||
More examples can be found at the [https://wiki.archlinux.org/title/Systemd/Timers Arch Wiki] and at the <code>systemd.timer</code> manpage.  | More examples can be found at the [https://wiki.archlinux.org/title/Systemd/Timers Arch Wiki] and at the <code>systemd.timer</code> manpage.  | ||
</translate>  | |||
<translate>  | |||
== Usage ==  | == Usage ==  | ||
</translate>  | |||
<translate>  | |||
List active timers and their current state:  | List active timers and their current state:  | ||
</translate>  | |||
<syntaxhighlight lang="bash">  | <syntaxhighlight lang="bash">  | ||
systemctl list-timers  | systemctl list-timers  | ||
</syntaxhighlight>  | </syntaxhighlight>  | ||
<translate>  | |||
Manually run a service once for testing purposes:  | Manually run a service once for testing purposes:  | ||
</translate>  | |||
<syntaxhighlight lang="bash">  | <syntaxhighlight lang="bash">  | ||
systemctl start hello-world  | systemctl start hello-world  | ||
</syntaxhighlight>  | </syntaxhighlight>  | ||
[[Category:systemd]]  | [[Category:systemd]]  | ||
Revision as of 07:03, 6 August 2024
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.
Configuration
The following example timer runs a systemd unit every 5 minutes which invokes a bash script.
systemd.timers."hello-world" = {
  wantedBy = [ "timers.target" ];
    timerConfig = {
      OnBootSec = "5m";
      OnUnitActiveSec = "5m";
      Unit = "hello-world.service";
    };
};
systemd.services."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.
Usage
List active timers and their current state:
systemctl list-timers
Manually run a service once for testing purposes:
systemctl start hello-world