]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/systemd.timer.xml
man: describe unit templating explicitly
[thirdparty/systemd.git] / man / systemd.timer.xml
CommitLineData
c129bd5d 1<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
11fcc3ab 2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
12b42c76 3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
11fcc3ab
LP
4
5<!--
572eb058
ZJS
6 SPDX-License-Identifier: LGPL-2.1+
7
11fcc3ab
LP
8 This file is part of systemd.
9
10 Copyright 2010 Lennart Poettering
11fcc3ab
LP
11-->
12
13<refentry id="systemd.timer">
798d3a52
ZJS
14 <refentryinfo>
15 <title>systemd.timer</title>
16 <productname>systemd</productname>
17
18 <authorgroup>
19 <author>
20 <contrib>Developer</contrib>
21 <firstname>Lennart</firstname>
22 <surname>Poettering</surname>
23 <email>lennart@poettering.net</email>
24 </author>
25 </authorgroup>
26 </refentryinfo>
27
28 <refmeta>
29 <refentrytitle>systemd.timer</refentrytitle>
30 <manvolnum>5</manvolnum>
31 </refmeta>
32
33 <refnamediv>
34 <refname>systemd.timer</refname>
35 <refpurpose>Timer unit configuration</refpurpose>
36 </refnamediv>
37
38 <refsynopsisdiv>
39 <para><filename><replaceable>timer</replaceable>.timer</filename></para>
40 </refsynopsisdiv>
41
42 <refsect1>
43 <title>Description</title>
44
45 <para>A unit configuration file whose name ends in
46 <literal>.timer</literal> encodes information about a timer
47 controlled and supervised by systemd, for timer-based
48 activation.</para>
49
50 <para>This man page lists the configuration options specific to
51 this unit type. See
52 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
53 for the common options of all unit configuration files. The common
54 configuration items are configured in the generic [Unit] and
55 [Install] sections. The timer specific configuration options are
56 configured in the [Timer] section.</para>
57
58 <para>For each timer file, a matching unit file must exist,
59 describing the unit to activate when the timer elapses. By
60 default, a service by the same name as the timer (except for the
61 suffix) is activated. Example: a timer file
62 <filename>foo.timer</filename> activates a matching service
63 <filename>foo.service</filename>. The unit to activate may be
64 controlled by <varname>Unit=</varname> (see below).</para>
14e2baa3
LP
65
66 <para>Note that in case the unit to activate is already active at the time the timer elapses it is not restarted,
67 but simply left running. There is no concept of spawning new service instances in this case. Due to this, services
595bfe7d 68 with <varname>RemainAfterExit=</varname> set (which stay around continuously even after the service's main process
14e2baa3
LP
69 exited) are usually not suitable for activation via repetitive timers, as they will only be activated once, and
70 then stay around forever.</para>
c129bd5d
LP
71 </refsect1>
72
73 <refsect1>
45f09f93
JL
74 <title>Implicit Dependencies</title>
75
76 <para>The following dependencies are implicitly added:</para>
77
78 <itemizedlist>
79 <listitem><para>Timer units automatically gain a <varname>Before=</varname>
80 dependency on the service they are supposed to activate.</para></listitem>
81 </itemizedlist>
82 </refsect1>
83
84 <refsect1>
85 <title>Default Dependencies</title>
86
87 <para>The following dependencies are added unless <varname>DefaultDependencies=no</varname> is set:</para>
88
89 <itemizedlist>
90 <listitem><para>Timer units will automatically have dependencies of type <varname>Requires=</varname> and
91 <varname>After=</varname> on <filename>sysinit.target</filename>, a dependency of type <varname>Before=</varname>
92 on <filename>timers.target</filename>, as well as <varname>Conflicts=</varname> and <varname>Before=</varname> on
93 <filename>shutdown.target</filename> to ensure that they are stopped cleanly prior to system shutdown. Only timer
94 units involved with early boot or late system shutdown should disable the
95 <varname>DefaultDependencies=</varname> option.</para></listitem>
96
97 <listitem><para>Timer units
98 with at least one <varname>OnCalendar=</varname> directive will have an additional <varname>After=</varname>
99 dependency on <filename>time-sync.target</filename> to avoid being started before the system clock has been
100 correctly set.</para></listitem>
101 </itemizedlist>
798d3a52
ZJS
102 </refsect1>
103
104 <refsect1>
105 <title>Options</title>
106
107 <para>Timer files must include a [Timer] section, which carries
108 information about the timer it defines. The options specific to
109 the [Timer] section of timer units are the following:</para>
110
111 <variablelist class='unit-directives'>
112 <varlistentry>
113 <term><varname>OnActiveSec=</varname></term>
114 <term><varname>OnBootSec=</varname></term>
115 <term><varname>OnStartupSec=</varname></term>
116 <term><varname>OnUnitActiveSec=</varname></term>
117 <term><varname>OnUnitInactiveSec=</varname></term>
118
119 <listitem><para>Defines monotonic timers relative to different
120 starting points: <varname>OnActiveSec=</varname> defines a
121 timer relative to the moment the timer itself is activated.
122 <varname>OnBootSec=</varname> defines a timer relative to when
123 the machine was booted up. <varname>OnStartupSec=</varname>
124 defines a timer relative to when systemd was first started.
125 <varname>OnUnitActiveSec=</varname> defines a timer relative
126 to when the unit the timer is activating was last activated.
127 <varname>OnUnitInactiveSec=</varname> defines a timer relative
128 to when the unit the timer is activating was last
129 deactivated.</para>
130
131 <para>Multiple directives may be combined of the same and of
132 different types. For example, by combining
133 <varname>OnBootSec=</varname> and
134 <varname>OnUnitActiveSec=</varname>, it is possible to define
135 a timer that elapses in regular intervals and activates a
136 specific service each time.</para>
137
138 <para>The arguments to the directives are time spans
139 configured in seconds. Example: "OnBootSec=50" means 50s after
140 boot-up. The argument may also include time units. Example:
141 "OnBootSec=5h 30min" means 5 hours and 30 minutes after
142 boot-up. For details about the syntax of time spans, see
9905e698 143 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
798d3a52
ZJS
144
145 <para>If a timer configured with <varname>OnBootSec=</varname>
146 or <varname>OnStartupSec=</varname> is already in the past
147 when the timer unit is activated, it will immediately elapse
148 and the configured unit is started. This is not the case for
149 timers defined in the other directives.</para>
150
151 <para>These are monotonic timers, independent of wall-clock
152 time and timezones. If the computer is temporarily suspended,
153 the monotonic clock stops too.</para>
154
155 <para>If the empty string is assigned to any of these options,
156 the list of timers is reset, and all prior assignments will
157 have no effect.</para>
158
159 <para>Note that timers do not necessarily expire at the
160 precise time configured with these settings, as they are
161 subject to the <varname>AccuracySec=</varname> setting
162 below.</para></listitem>
163
164 </varlistentry>
165
166 <varlistentry>
167 <term><varname>OnCalendar=</varname></term>
168
169 <listitem><para>Defines realtime (i.e. wallclock) timers with
170 calendar event expressions. See
171 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>
172 for more information on the syntax of calendar event
173 expressions. Otherwise, the semantics are similar to
174 <varname>OnActiveSec=</varname> and related settings.</para>
175
176 <para>Note that timers do not necessarily expire at the
177 precise time configured with this setting, as it is subject to
178 the <varname>AccuracySec=</varname> setting
192fa38b
MS
179 below.</para>
180
181 <para>May be specified more than once.</para></listitem>
798d3a52
ZJS
182 </varlistentry>
183
184 <varlistentry>
185 <term><varname>AccuracySec=</varname></term>
186
187 <listitem><para>Specify the accuracy the timer shall elapse
188 with. Defaults to 1min. The timer is scheduled to elapse
189 within a time window starting with the time specified in
190 <varname>OnCalendar=</varname>,
191 <varname>OnActiveSec=</varname>,
192 <varname>OnBootSec=</varname>,
193 <varname>OnStartupSec=</varname>,
194 <varname>OnUnitActiveSec=</varname> or
195 <varname>OnUnitInactiveSec=</varname> and ending the time
196 configured with <varname>AccuracySec=</varname> later. Within
197 this time window, the expiry time will be placed at a
744c7693 198 host-specific, randomized, but stable position that is
798d3a52 199 synchronized between all local timer units. This is done in
744c7693
LP
200 order to optimize power consumption to suppress unnecessary
201 CPU wake-ups. To get best accuracy, set this option to
202 1us. Note that the timer is still subject to the timer slack
203 configured via
798d3a52
ZJS
204 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>'s
205 <varname>TimerSlackNSec=</varname> setting. See
206 <citerefentry><refentrytitle>prctl</refentrytitle><manvolnum>2</manvolnum></citerefentry>
207 for details. To optimize power consumption, make sure to set
208 this value as high as possible and as low as
209 necessary.</para></listitem>
210 </varlistentry>
744c7693
LP
211
212 <varlistentry>
6f5d7998 213 <term><varname>RandomizedDelaySec=</varname></term>
744c7693
LP
214
215 <listitem><para>Delay the timer by a randomly selected, evenly
216 distributed amount of time between 0 and the specified time
217 value. Defaults to 0, indicating that no randomized delay
218 shall be applied. Each timer unit will determine this delay
219 randomly each time it is started, and the delay will simply be
220 added on top of the next determined elapsing time. This is
221 useful to stretch dispatching of similarly configured timer
222 events over a certain amount time, to avoid that they all fire
223 at the same time, possibly resulting in resource
224 congestion. Note the relation to
225 <varname>AccuracySec=</varname> above: the latter allows the
226 service manager to coalesce timer events within a specified
227 time range in order to minimize wakeups, the former does the
228 opposite: it stretches timer events over a time range, to make
229 it unlikely that they fire simultaneously. If
6f5d7998 230 <varname>RandomizedDelaySec=</varname> and
744c7693 231 <varname>AccuracySec=</varname> are used in conjunction, first
20cc0ac7
ZJS
232 the randomized delay is added, and then the result is
233 possibly further shifted to coalesce it with other timer
234 events happening on the system. As mentioned above
744c7693 235 <varname>AccuracySec=</varname> defaults to 1min and
6f5d7998 236 <varname>RandomizedDelaySec=</varname> to 0, thus encouraging
744c7693
LP
237 coalescing of timer events. In order to optimally stretch
238 timer events over a certain range of time, make sure to set
6f5d7998 239 <varname>RandomizedDelaySec=</varname> to a higher value, and
744c7693
LP
240 <varname>AccuracySec=1us</varname>.</para></listitem>
241 </varlistentry>
242
798d3a52
ZJS
243 <varlistentry>
244 <term><varname>Unit=</varname></term>
245
246 <listitem><para>The unit to activate when this timer elapses.
247 The argument is a unit name, whose suffix is not
248 <literal>.timer</literal>. If not specified, this value
249 defaults to a service that has the same name as the timer
250 unit, except for the suffix. (See above.) It is recommended
251 that the unit name that is activated and the unit name of the
252 timer unit are named identically, except for the
253 suffix.</para></listitem>
254 </varlistentry>
255
256
257 <varlistentry>
258 <term><varname>Persistent=</varname></term>
259
260 <listitem><para>Takes a boolean argument. If true, the time
261 when the service unit was last triggered is stored on disk.
262 When the timer is activated, the service unit is triggered
263 immediately if it would have been triggered at least once
264 during the time when the timer was inactive. This is useful to
265 catch up on missed runs of the service when the machine was
266 off. Note that this setting only has an effect on timers
07bd0e02
EV
267 configured with <varname>OnCalendar=</varname>. Defaults
268 to <varname>false</varname>.
798d3a52
ZJS
269 </para></listitem>
270 </varlistentry>
271
272 <varlistentry>
273 <term><varname>WakeSystem=</varname></term>
274
275 <listitem><para>Takes a boolean argument. If true, an elapsing
276 timer will cause the system to resume from suspend, should it
277 be suspended and if the system supports this. Note that this
278 option will only make sure the system resumes on the
279 appropriate times, it will not take care of suspending it
280 again after any work that is to be done is finished. Defaults
281 to <varname>false</varname>.</para></listitem>
3e0c30ac
LP
282 </varlistentry>
283
284 <varlistentry>
70b4f819 285 <term><varname>RemainAfterElapse=</varname></term>
3e0c30ac
LP
286
287 <listitem><para>Takes a boolean argument. If true, an elapsed
70b4f819
LP
288 timer will stay loaded, and its state remains queriable. If
289 false, an elapsed timer unit that cannot elapse anymore is
290 unloaded. Turning this off is particularly useful for
291 transient timer units that shall disappear after they first
292 elapse. Note that this setting has an effect on repeatedly
7f3fdb7f 293 starting a timer unit that only elapses once: if
70b4f819
LP
294 <varname>RemainAfterElapse=</varname> is on, it will not be
295 started again, and is guaranteed to elapse only once. However,
23743744 296 if <varname>RemainAfterElapse=</varname> is off, it might be
70b4f819
LP
297 started again if it is already elapsed, and thus be triggered
298 multiple times. Defaults to
3e0c30ac 299 <varname>yes</varname>.</para></listitem>
798d3a52
ZJS
300 </varlistentry>
301 </variablelist>
302 </refsect1>
303
304 <refsect1>
305 <title>See Also</title>
306 <para>
307 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
308 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
309 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
310 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
311 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
312 <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
313 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
314 <citerefentry><refentrytitle>prctl</refentrytitle><manvolnum>2</manvolnum></citerefentry>
315 </para>
316 </refsect1>
11fcc3ab
LP
317
318</refentry>