]> git.ipfire.org Git - thirdparty/systemd.git/blob - man/systemd.service.xml
Merge pull request #7664 from poettering/fix-integration-tests
[thirdparty/systemd.git] / man / systemd.service.xml
1 <?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4
5 <!--
6 SPDX-License-Identifier: LGPL-2.1+
7
8 This file is part of systemd.
9
10 Copyright 2010 Lennart Poettering
11
12 systemd is free software; you can redistribute it and/or modify it
13 under the terms of the GNU Lesser General Public License as published by
14 the Free Software Foundation; either version 2.1 of the License, or
15 (at your option) any later version.
16
17 systemd is distributed in the hope that it will be useful, but
18 WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 Lesser General Public License for more details.
21
22 You should have received a copy of the GNU Lesser General Public License
23 along with systemd; If not, see <http://www.gnu.org/licenses/>.
24 -->
25
26 <refentry id="systemd.service">
27 <refentryinfo>
28 <title>systemd.service</title>
29 <productname>systemd</productname>
30
31 <authorgroup>
32 <author>
33 <contrib>Developer</contrib>
34 <firstname>Lennart</firstname>
35 <surname>Poettering</surname>
36 <email>lennart@poettering.net</email>
37 </author>
38 </authorgroup>
39 </refentryinfo>
40
41 <refmeta>
42 <refentrytitle>systemd.service</refentrytitle>
43 <manvolnum>5</manvolnum>
44 </refmeta>
45
46 <refnamediv>
47 <refname>systemd.service</refname>
48 <refpurpose>Service unit configuration</refpurpose>
49 </refnamediv>
50
51 <refsynopsisdiv>
52 <para><filename><replaceable>service</replaceable>.service</filename></para>
53 </refsynopsisdiv>
54
55 <refsect1>
56 <title>Description</title>
57
58 <para>A unit configuration file whose name ends in
59 <filename>.service</filename> encodes information about a process
60 controlled and supervised by systemd.</para>
61
62 <para>This man page lists the configuration options specific to
63 this unit type. See
64 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
65 for the common options of all unit configuration files. The common
66 configuration items are configured in the generic
67 <literal>[Unit]</literal> and <literal>[Install]</literal>
68 sections. The service specific configuration options are
69 configured in the <literal>[Service]</literal> section.</para>
70
71 <para>Additional options are listed in
72 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
73 which define the execution environment the commands are executed
74 in, and in
75 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
76 which define the way the processes of the service are terminated,
77 and in
78 <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
79 which configure resource control settings for the processes of the
80 service.</para>
81
82 <para>If a service is requested under a certain name but no unit
83 configuration file is found, systemd looks for a SysV init script
84 by the same name (with the <filename>.service</filename> suffix
85 removed) and dynamically creates a service unit from that script.
86 This is useful for compatibility with SysV. Note that this
87 compatibility is quite comprehensive but not 100%. For details
88 about the incompatibilities, see the <ulink
89 url="https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities">Incompatibilities
90 with SysV</ulink> document.</para>
91 </refsect1>
92
93 <refsect1>
94 <title>Implicit Dependencies</title>
95
96 <para>The following dependencies are implicitly added:</para>
97
98 <itemizedlist>
99 <listitem><para>Services with <varname>Type=dbus</varname> set automatically
100 acquire dependencies of type <varname>Requires=</varname> and
101 <varname>After=</varname> on
102 <filename>dbus.socket</filename>.</para></listitem>
103
104 <listitem><para>Socket activated services are automatically ordered after
105 their activating <filename>.socket</filename> units via an
106 automatic <varname>After=</varname> dependency.
107 Services also pull in all <filename>.socket</filename> units
108 listed in <varname>Sockets=</varname> via automatic
109 <varname>Wants=</varname> and <varname>After=</varname> dependencies.</para></listitem>
110 </itemizedlist>
111
112 <para>Additional implicit dependencies may be added as result of
113 execution and resource control parameters as documented in
114 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
115 and
116 <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
117 </refsect1>
118
119 <refsect1>
120 <title>Default Dependencies</title>
121
122 <para>The following dependencies are added unless <varname>DefaultDependencies=no</varname> is set:</para>
123
124 <itemizedlist>
125 <listitem><para>Service units will have dependencies of type <varname>Requires=</varname> and
126 <varname>After=</varname> on <filename>sysinit.target</filename>, a dependency of type <varname>After=</varname> on
127 <filename>basic.target</filename> as well as dependencies of type <varname>Conflicts=</varname> and
128 <varname>Before=</varname> on <filename>shutdown.target</filename>. These ensure that normal service units pull in
129 basic system initialization, and are terminated cleanly prior to system shutdown. Only services involved with early
130 boot or late system shutdown should disable this option.</para></listitem>
131
132 <listitem><para>Instanced service units (i.e. service units with an <literal>@</literal> in their name) are assigned by
133 default a per-template slice unit (see
134 <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>), named after the
135 template unit, containing all instances of the specific template. This slice is normally stopped at shutdown,
136 together with all template instances. If that is not desired, set <varname>DefaultDependencies=no</varname> in the
137 template unit, and either define your own per-template slice unit file that also sets
138 <varname>DefaultDependencies=no</varname>, or set <varname>Slice=system.slice</varname> (or another suitable slice)
139 in the template unit. Also see
140 <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
141 </para></listitem>
142 </itemizedlist>
143 </refsect1>
144
145 <refsect1>
146 <title>Options</title>
147
148 <para>Service files must include a <literal>[Service]</literal>
149 section, which carries information about the service and the
150 process it supervises. A number of options that may be used in
151 this section are shared with other unit types. These options are
152 documented in
153 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
154 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
155 and
156 <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
157 The options specific to the <literal>[Service]</literal> section
158 of service units are the following:</para>
159
160 <variablelist class='unit-directives'>
161 <varlistentry>
162 <term><varname>Type=</varname></term>
163
164 <listitem><para>Configures the process start-up type for this
165 service unit. One of
166 <option>simple</option>,
167 <option>forking</option>,
168 <option>oneshot</option>,
169 <option>dbus</option>,
170 <option>notify</option> or
171 <option>idle</option>.</para>
172
173 <para>If set to <option>simple</option> (the default if
174 neither <varname>Type=</varname> nor
175 <varname>BusName=</varname>, but <varname>ExecStart=</varname>
176 are specified), it is expected that the process configured
177 with <varname>ExecStart=</varname> is the main process of the
178 service. In this mode, if the process offers functionality to
179 other processes on the system, its communication channels
180 should be installed before the daemon is started up (e.g.
181 sockets set up by systemd, via socket activation), as systemd
182 will immediately proceed starting follow-up units.</para>
183
184 <para>If set to <option>forking</option>, it is expected that
185 the process configured with <varname>ExecStart=</varname> will
186 call <function>fork()</function> as part of its start-up. The
187 parent process is expected to exit when start-up is complete
188 and all communication channels are set up. The child continues
189 to run as the main daemon process. This is the behavior of
190 traditional UNIX daemons. If this setting is used, it is
191 recommended to also use the <varname>PIDFile=</varname>
192 option, so that systemd can identify the main process of the
193 daemon. systemd will proceed with starting follow-up units as
194 soon as the parent process exits.</para>
195
196 <para>Behavior of <option>oneshot</option> is similar to
197 <option>simple</option>; however, it is expected that the
198 process has to exit before systemd starts follow-up units.
199 <varname>RemainAfterExit=</varname> is particularly useful for
200 this type of service. This is the implied default if neither
201 <varname>Type=</varname> nor <varname>ExecStart=</varname> are
202 specified.</para>
203
204 <para>Behavior of <option>dbus</option> is similar to
205 <option>simple</option>; however, it is expected that the
206 daemon acquires a name on the D-Bus bus, as configured by
207 <varname>BusName=</varname>. systemd will proceed with
208 starting follow-up units after the D-Bus bus name has been
209 acquired. Service units with this option configured implicitly
210 gain dependencies on the <filename>dbus.socket</filename>
211 unit. This type is the default if <varname>BusName=</varname>
212 is specified.</para>
213
214 <para>Behavior of <option>notify</option> is similar to
215 <option>simple</option>; however, it is expected that the
216 daemon sends a notification message via
217 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
218 or an equivalent call when it has finished starting up.
219 systemd will proceed with starting follow-up units after this
220 notification message has been sent. If this option is used,
221 <varname>NotifyAccess=</varname> (see below) should be set to
222 open access to the notification socket provided by systemd. If
223 <varname>NotifyAccess=</varname> is missing or set to
224 <option>none</option>, it will be forcibly set to
225 <option>main</option>. Note that currently
226 <varname>Type=</varname><option>notify</option> will not work
227 if used in combination with
228 <varname>PrivateNetwork=</varname><option>yes</option>.</para>
229
230 <para>Behavior of <option>idle</option> is very similar to <option>simple</option>; however, actual execution
231 of the service program is delayed until all active jobs are dispatched. This may be used to avoid interleaving
232 of output of shell services with the status output on the console. Note that this type is useful only to
233 improve console output, it is not useful as a general unit ordering tool, and the effect of this service type
234 is subject to a 5s time-out, after which the service program is invoked anyway.</para>
235 </listitem>
236 </varlistentry>
237
238 <varlistentry>
239 <term><varname>RemainAfterExit=</varname></term>
240
241 <listitem><para>Takes a boolean value that specifies whether
242 the service shall be considered active even when all its
243 processes exited. Defaults to <option>no</option>.</para>
244 </listitem>
245 </varlistentry>
246
247 <varlistentry>
248 <term><varname>GuessMainPID=</varname></term>
249
250 <listitem><para>Takes a boolean value that specifies whether
251 systemd should try to guess the main PID of a service if it
252 cannot be determined reliably. This option is ignored unless
253 <option>Type=forking</option> is set and
254 <option>PIDFile=</option> is unset because for the other types
255 or with an explicitly configured PID file, the main PID is
256 always known. The guessing algorithm might come to incorrect
257 conclusions if a daemon consists of more than one process. If
258 the main PID cannot be determined, failure detection and
259 automatic restarting of a service will not work reliably.
260 Defaults to <option>yes</option>.</para>
261 </listitem>
262 </varlistentry>
263
264 <varlistentry>
265 <term><varname>PIDFile=</varname></term>
266
267 <listitem><para>Takes an absolute filename pointing to the
268 PID file of this daemon. Use of this option is recommended for
269 services where <varname>Type=</varname> is set to
270 <option>forking</option>. systemd will read the PID of the
271 main process of the daemon after start-up of the service.
272 systemd will not write to the file configured here, although
273 it will remove the file after the service has shut down if it
274 still exists.
275 </para>
276 </listitem>
277 </varlistentry>
278
279 <varlistentry>
280 <term><varname>BusName=</varname></term>
281
282 <listitem><para>Takes a D-Bus bus name that this service is
283 reachable as. This option is mandatory for services where
284 <varname>Type=</varname> is set to
285 <option>dbus</option>.</para>
286 </listitem>
287 </varlistentry>
288
289 <varlistentry>
290 <term><varname>ExecStart=</varname></term>
291 <listitem><para>Commands with their arguments that are
292 executed when this service is started. The value is split into
293 zero or more command lines according to the rules described
294 below (see section "Command Lines" below).
295 </para>
296
297 <para>Unless <varname>Type=</varname> is <option>oneshot</option>, exactly one command must be given. When
298 <varname>Type=oneshot</varname> is used, zero or more commands may be specified. Commands may be specified by
299 providing multiple command lines in the same directive, or alternatively, this directive may be specified more
300 than once with the same effect. If the empty string is assigned to this option, the list of commands to start
301 is reset, prior assignments of this option will have no effect. If no <varname>ExecStart=</varname> is
302 specified, then the service must have <varname>RemainAfterExit=yes</varname> and at least one
303 <varname>ExecStop=</varname> line set. (Services lacking both <varname>ExecStart=</varname> and
304 <varname>ExecStop=</varname> are not valid.)</para>
305
306 <para>For each of the specified commands, the first argument must be an absolute path to an
307 executable. Optionally, this filename may be prefixed with a number of special characters:</para>
308
309 <table>
310 <title>Special executable prefixes</title>
311
312 <tgroup cols='2'>
313 <colspec colname='prefix'/>
314 <colspec colname='meaning'/>
315
316 <thead>
317 <row>
318 <entry>Prefix</entry>
319 <entry>Effect</entry>
320 </row>
321 </thead>
322 <tbody>
323 <row>
324 <entry><literal>@</literal></entry>
325 <entry>If the executable path is prefixed with <literal>@</literal>, the second specified token will be passed as <literal>argv[0]</literal> to the executed process (instead of the actual filename), followed by the further arguments specified.</entry>
326 </row>
327
328 <row>
329 <entry><literal>-</literal></entry>
330 <entry>If the executable path is prefixed with <literal>-</literal>, an exit code of the command normally considered a failure (i.e. non-zero exit status or abnormal exit due to signal) is ignored and considered success.</entry>
331 </row>
332
333 <row>
334 <entry><literal>+</literal></entry>
335 <entry>If the executable path is prefixed with <literal>+</literal> then the process is executed with full privileges. In this mode privilege restrictions configured with <varname>User=</varname>, <varname>Group=</varname>, <varname>CapabilityBoundingSet=</varname> or the various file system namespacing options (such as <varname>PrivateDevices=</varname>, <varname>PrivateTmp=</varname>) are not applied to the invoked command line (but still affect any other <varname>ExecStart=</varname>, <varname>ExecStop=</varname>, … lines).</entry>
336 </row>
337
338 <row>
339 <entry><literal>!</literal></entry>
340
341 <entry>Similar to the <literal>+</literal> character discussed above this permits invoking command lines with elevated privileges. However, unlike <literal>+</literal> the <literal>!</literal> character exclusively alters the effect of <varname>User=</varname>, <varname>Group=</varname> and <varname>SupplementaryGroups=</varname>, i.e. only the stanzas the affect user and group credentials. Note that this setting may be combined with <varname>DynamicUser=</varname>, in which case a dynamic user/group pair is allocated before the command is invoked, but credential changing is left to the executed process itself.</entry>
342 </row>
343
344 <row>
345 <entry><literal>!!</literal></entry>
346
347 <entry>This prefix is very similar to <literal>!</literal>, however it only has an effect on systems lacking support for ambient process capabilities, i.e. without support for <varname>AmbientCapabilities=</varname>. It's intended to be used for unit files that take benefit of ambient capabilities to run processes with minimal privileges wherever possible while remaining compatible with systems that lack ambient capabilities support. Note that when <literal>!!</literal> is used, and a system lacking ambient capability support is detected any configured <varname>SystemCallFilter=</varname> and <varname>CapabilityBoundingSet=</varname> stanzas are implicitly modified, in order to permit spawned processes to drop credentials and capabilities themselves, even if this is configured to not be allowed. Moreover, if this prefix is used and a system lacking ambient capability support is detected <varname>AmbientCapabilities=</varname> will be skipped and not be applied. On systems supporting ambient capabilities, <literal>!!</literal> has no effect and is redundant.</entry>
348 </row>
349 </tbody>
350 </tgroup>
351 </table>
352
353 <para><literal>@</literal>, <literal>-</literal>, and one of
354 <literal>+</literal>/<literal>!</literal>/<literal>!!</literal> may be used together and they can appear in any
355 order. However, only one of <literal>+</literal>, <literal>!</literal>, <literal>!!</literal> may be used at a
356 time. Note that these prefixes are also supported for the other command line settings,
357 i.e. <varname>ExecStartPre=</varname>, <varname>ExecStartPost=</varname>, <varname>ExecReload=</varname>,
358 <varname>ExecStop=</varname> and <varname>ExecStopPost=</varname>.</para>
359
360 <para>If more than one command is specified, the commands are
361 invoked sequentially in the order they appear in the unit
362 file. If one of the commands fails (and is not prefixed with
363 <literal>-</literal>), other lines are not executed, and the
364 unit is considered failed.</para>
365
366 <para>Unless <varname>Type=forking</varname> is set, the
367 process started via this command line will be considered the
368 main process of the daemon.</para>
369 </listitem>
370 </varlistentry>
371
372 <varlistentry>
373 <term><varname>ExecStartPre=</varname></term>
374 <term><varname>ExecStartPost=</varname></term>
375 <listitem><para>Additional commands that are executed before
376 or after the command in <varname>ExecStart=</varname>,
377 respectively. Syntax is the same as for
378 <varname>ExecStart=</varname>, except that multiple command
379 lines are allowed and the commands are executed one after the
380 other, serially.</para>
381
382 <para>If any of those commands (not prefixed with
383 <literal>-</literal>) fail, the rest are not executed and the
384 unit is considered failed.</para>
385
386 <para><varname>ExecStart=</varname> commands are only run after
387 all <varname>ExecStartPre=</varname> commands that were not prefixed
388 with a <literal>-</literal> exit successfully.</para>
389
390 <para><varname>ExecStartPost=</varname> commands are only run after the commands specified in
391 <varname>ExecStart=</varname> have been invoked successfully, as determined by <varname>Type=</varname>
392 (i.e. the process has been started for <varname>Type=simple</varname> or <varname>Type=idle</varname>, the last
393 <varname>ExecStart=</varname> process exited successfully for <varname>Type=oneshot</varname>, the initial
394 process exited successfully for <varname>Type=forking</varname>, <literal>READY=1</literal> is sent for
395 <varname>Type=notify</varname>, or the <varname>BusName=</varname> has been taken for
396 <varname>Type=dbus</varname>).</para>
397
398 <para>Note that <varname>ExecStartPre=</varname> may not be
399 used to start long-running processes. All processes forked
400 off by processes invoked via <varname>ExecStartPre=</varname> will
401 be killed before the next service process is run.</para>
402
403 <para>Note that if any of the commands specified in <varname>ExecStartPre=</varname>,
404 <varname>ExecStart=</varname>, or <varname>ExecStartPost=</varname> fail (and are not prefixed with
405 <literal>-</literal>, see above) or time out before the service is fully up, execution continues with commands
406 specified in <varname>ExecStopPost=</varname>, the commands in <varname>ExecStop=</varname> are skipped.</para>
407 </listitem>
408 </varlistentry>
409
410 <varlistentry>
411 <term><varname>ExecReload=</varname></term>
412 <listitem><para>Commands to execute to trigger a configuration
413 reload in the service. This argument takes multiple command
414 lines, following the same scheme as described for
415 <varname>ExecStart=</varname> above. Use of this setting is
416 optional. Specifier and environment variable substitution is
417 supported here following the same scheme as for
418 <varname>ExecStart=</varname>.</para>
419
420 <para>One additional, special environment variable is set: if
421 known, <varname>$MAINPID</varname> is set to the main process
422 of the daemon, and may be used for command lines like the
423 following:</para>
424
425 <programlisting>/bin/kill -HUP $MAINPID</programlisting>
426
427 <para>Note however that reloading a daemon by sending a signal
428 (as with the example line above) is usually not a good choice,
429 because this is an asynchronous operation and hence not
430 suitable to order reloads of multiple services against each
431 other. It is strongly recommended to set
432 <varname>ExecReload=</varname> to a command that not only
433 triggers a configuration reload of the daemon, but also
434 synchronously waits for it to complete.</para>
435 </listitem>
436 </varlistentry>
437
438 <varlistentry>
439 <term><varname>ExecStop=</varname></term>
440 <listitem><para>Commands to execute to stop the service
441 started via <varname>ExecStart=</varname>. This argument takes
442 multiple command lines, following the same scheme as described
443 for <varname>ExecStart=</varname> above. Use of this setting
444 is optional. After the commands configured in this option are
445 run, it is implied that the service is stopped, and any processes
446 remaining for it are terminated
447 according to the <varname>KillMode=</varname> setting (see
448 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
449 If this option is not specified, the process is terminated by
450 sending the signal specified in <varname>KillSignal=</varname>
451 when service stop is requested. Specifier and environment
452 variable substitution is supported (including
453 <varname>$MAINPID</varname>, see above).</para>
454
455 <para>Note that it is usually not sufficient to specify a command for this setting that only asks the service
456 to terminate (for example, by queuing some form of termination signal for it), but does not wait for it to do
457 so. Since the remaining processes of the services are killed according to <varname>KillMode=</varname> and
458 <varname>KillSignal=</varname> as described above immediately after the command exited, this may not result in
459 a clean stop. The specified command should hence be a synchronous operation, not an asynchronous one.</para>
460
461 <para>Note that the commands specified in <varname>ExecStop=</varname> are only executed when the service
462 started successfully first. They are not invoked if the service was never started at all, or in case its
463 start-up failed, for example because any of the commands specified in <varname>ExecStart=</varname>,
464 <varname>ExecStartPre=</varname> or <varname>ExecStartPost=</varname> failed (and weren't prefixed with
465 <literal>-</literal>, see above) or timed out. Use <varname>ExecStopPost=</varname> to invoke commands when a
466 service failed to start up correctly and is shut down again. Also note that, service restart requests are
467 implemented as stop operations followed by start operations. This means that <varname>ExecStop=</varname> and
468 <varname>ExecStopPost=</varname> are executed during a service restart operation.</para>
469
470 <para>It is recommended to use this setting for commands that communicate with the service requesting clean
471 termination. When the commands specified with this option are executed it should be assumed that the service is
472 still fully up and is able to react correctly to all commands. For post-mortem clean-up steps use
473 <varname>ExecStopPost=</varname> instead.</para></listitem>
474 </varlistentry>
475
476 <varlistentry>
477 <term><varname>ExecStopPost=</varname></term>
478 <listitem><para>Additional commands that are executed after the service is stopped. This includes cases where
479 the commands configured in <varname>ExecStop=</varname> were used, where the service does not have any
480 <varname>ExecStop=</varname> defined, or where the service exited unexpectedly. This argument takes multiple
481 command lines, following the same scheme as described for <varname>ExecStart=</varname>. Use of these settings
482 is optional. Specifier and environment variable substitution is supported. Note that – unlike
483 <varname>ExecStop=</varname> – commands specified with this setting are invoked when a service failed to start
484 up correctly and is shut down again.</para>
485
486 <para>It is recommended to use this setting for clean-up operations that shall be executed even when the
487 service failed to start up correctly. Commands configured with this setting need to be able to operate even if
488 the service failed starting up half-way and left incompletely initialized data around. As the service's
489 processes have been terminated already when the commands specified with this setting are executed they should
490 not attempt to communicate with them.</para>
491
492 <para>Note that all commands that are configured with this setting are invoked with the result code of the
493 service, as well as the main process' exit code and status, set in the <varname>$SERVICE_RESULT</varname>,
494 <varname>$EXIT_CODE</varname> and <varname>$EXIT_STATUS</varname> environment variables, see
495 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
496 details.</para></listitem>
497 </varlistentry>
498
499 <varlistentry>
500 <term><varname>RestartSec=</varname></term>
501 <listitem><para>Configures the time to sleep before restarting
502 a service (as configured with <varname>Restart=</varname>).
503 Takes a unit-less value in seconds, or a time span value such
504 as "5min 20s". Defaults to 100ms.</para></listitem>
505 </varlistentry>
506
507 <varlistentry>
508 <term><varname>TimeoutStartSec=</varname></term>
509 <listitem><para>Configures the time to wait for start-up. If a
510 daemon service does not signal start-up completion within the
511 configured time, the service will be considered failed and
512 will be shut down again. Takes a unit-less value in seconds,
513 or a time span value such as "5min 20s". Pass
514 <literal>infinity</literal> to disable the timeout logic. Defaults to
515 <varname>DefaultTimeoutStartSec=</varname> from the manager
516 configuration file, except when
517 <varname>Type=oneshot</varname> is used, in which case the
518 timeout is disabled by default (see
519 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
520 </para>
521
522 <para>If a service of <varname>Type=notify</varname> sends <literal>EXTEND_TIMEOUT_USEC=…</literal>, this may cause
523 the start time to be extended beyond <varname>TimeoutStartSec=</varname>. The first receipt of this message
524 must occur before <varname>TimeoutStartSec=</varname> is exceeded, and once the start time has exended beyond
525 <varname>TimeoutStartSec=</varname>, the service manager will allow the service to continue to start, provided
526 the service repeats <literal>EXTEND_TIMEOUT_USEC=…</literal> within the interval specified until the service
527 startup status is finished by <literal>READY=1</literal>. (see
528 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>).
529 </para></listitem>
530 </varlistentry>
531
532 <varlistentry>
533 <term><varname>TimeoutStopSec=</varname></term>
534 <listitem><para>Configures the time to wait for stop. If a
535 service is asked to stop, but does not terminate in the
536 specified time, it will be terminated forcibly via
537 <constant>SIGTERM</constant>, and after another timeout of
538 equal duration with <constant>SIGKILL</constant> (see
539 <varname>KillMode=</varname> in
540 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
541 Takes a unit-less value in seconds, or a time span value such
542 as "5min 20s". Pass <literal>infinity</literal> to disable the
543 timeout logic. Defaults to
544 <varname>DefaultTimeoutStopSec=</varname> from the manager
545 configuration file (see
546 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
547 </para>
548
549 <para>If a service of <varname>Type=notify</varname> sends <literal>EXTEND_TIMEOUT_USEC=…</literal>, this may cause
550 the stop time to be extended beyond <varname>TimeoutStopSec=</varname>. The first receipt of this message
551 must occur before <varname>TimeoutStopSec=</varname> is exceeded, and once the stop time has exended beyond
552 <varname>TimeoutStopSec=</varname>, the service manager will allow the service to continue to stop, provided
553 the service repeats <literal>EXTEND_TIMEOUT_USEC=…</literal> within the interval specified, or terminates itself
554 (see <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>).
555 </para></listitem>
556 </varlistentry>
557
558 <varlistentry>
559 <term><varname>TimeoutSec=</varname></term>
560 <listitem><para>A shorthand for configuring both
561 <varname>TimeoutStartSec=</varname> and
562 <varname>TimeoutStopSec=</varname> to the specified value.
563 </para></listitem>
564 </varlistentry>
565
566 <varlistentry>
567 <term><varname>RuntimeMaxSec=</varname></term>
568
569 <listitem><para>Configures a maximum time for the service to run. If this is used and the service has been
570 active for longer than the specified time it is terminated and put into a failure state. Note that this setting
571 does not have any effect on <varname>Type=oneshot</varname> services, as they terminate immediately after
572 activation completed. Pass <literal>infinity</literal> (the default) to configure no runtime
573 limit.</para>
574
575 <para>If a service of <varname>Type=notify</varname> sends <literal>EXTEND_TIMEOUT_USEC=…</literal>, this may cause
576 the runtime to be extended beyond <varname>RuntimeMaxSec=</varname>. The first receipt of this message
577 must occur before <varname>RuntimeMaxSec=</varname> is exceeded, and once the runtime has exended beyond
578 <varname>RuntimeMaxSec=</varname>, the service manager will allow the service to continue to run, provided
579 the service repeats <literal>EXTEND_TIMEOUT_USEC=…</literal> within the interval specified until the service
580 shutdown is acheived by <literal>STOPPING=1</literal> (or termination). (see
581 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>).
582 </para></listitem>
583 </varlistentry>
584
585 <varlistentry>
586 <term><varname>WatchdogSec=</varname></term>
587 <listitem><para>Configures the watchdog timeout for a service.
588 The watchdog is activated when the start-up is completed. The
589 service must call
590 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
591 regularly with <literal>WATCHDOG=1</literal> (i.e. the
592 "keep-alive ping"). If the time between two such calls is
593 larger than the configured time, then the service is placed in
594 a failed state and it will be terminated with
595 <constant>SIGABRT</constant>. By setting
596 <varname>Restart=</varname> to <option>on-failure</option>,
597 <option>on-watchdog</option>, <option>on-abnormal</option> or
598 <option>always</option>, the service will be automatically
599 restarted. The time configured here will be passed to the
600 executed service process in the
601 <varname>WATCHDOG_USEC=</varname> environment variable. This
602 allows daemons to automatically enable the keep-alive pinging
603 logic if watchdog support is enabled for the service. If this
604 option is used, <varname>NotifyAccess=</varname> (see below)
605 should be set to open access to the notification socket
606 provided by systemd. If <varname>NotifyAccess=</varname> is
607 not set, it will be implicitly set to <option>main</option>.
608 Defaults to 0, which disables this feature. The service can
609 check whether the service manager expects watchdog keep-alive
610 notifications. See
611 <citerefentry><refentrytitle>sd_watchdog_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>
612 for details.
613 <citerefentry><refentrytitle>sd_event_set_watchdog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
614 may be used to enable automatic watchdog notification support.
615 </para></listitem>
616 </varlistentry>
617
618 <varlistentry>
619 <term><varname>Restart=</varname></term>
620 <listitem><para>Configures whether the service shall be
621 restarted when the service process exits, is killed, or a
622 timeout is reached. The service process may be the main
623 service process, but it may also be one of the processes
624 specified with <varname>ExecStartPre=</varname>,
625 <varname>ExecStartPost=</varname>,
626 <varname>ExecStop=</varname>,
627 <varname>ExecStopPost=</varname>, or
628 <varname>ExecReload=</varname>. When the death of the process
629 is a result of systemd operation (e.g. service stop or
630 restart), the service will not be restarted. Timeouts include
631 missing the watchdog "keep-alive ping" deadline and a service
632 start, reload, and stop operation timeouts.</para>
633
634 <para>Takes one of
635 <option>no</option>,
636 <option>on-success</option>,
637 <option>on-failure</option>,
638 <option>on-abnormal</option>,
639 <option>on-watchdog</option>,
640 <option>on-abort</option>, or
641 <option>always</option>.
642 If set to <option>no</option> (the default), the service will
643 not be restarted. If set to <option>on-success</option>, it
644 will be restarted only when the service process exits cleanly.
645 In this context, a clean exit means an exit code of 0, or one
646 of the signals
647 <constant>SIGHUP</constant>,
648 <constant>SIGINT</constant>,
649 <constant>SIGTERM</constant> or
650 <constant>SIGPIPE</constant>, and
651 additionally, exit statuses and signals specified in
652 <varname>SuccessExitStatus=</varname>. If set to
653 <option>on-failure</option>, the service will be restarted
654 when the process exits with a non-zero exit code, is
655 terminated by a signal (including on core dump, but excluding
656 the aforementioned four signals), when an operation (such as
657 service reload) times out, and when the configured watchdog
658 timeout is triggered. If set to <option>on-abnormal</option>,
659 the service will be restarted when the process is terminated
660 by a signal (including on core dump, excluding the
661 aforementioned four signals), when an operation times out, or
662 when the watchdog timeout is triggered. If set to
663 <option>on-abort</option>, the service will be restarted only
664 if the service process exits due to an uncaught signal not
665 specified as a clean exit status. If set to
666 <option>on-watchdog</option>, the service will be restarted
667 only if the watchdog timeout for the service expires. If set
668 to <option>always</option>, the service will be restarted
669 regardless of whether it exited cleanly or not, got terminated
670 abnormally by a signal, or hit a timeout.</para>
671
672 <table>
673 <title>Exit causes and the effect of the <varname>Restart=</varname> settings on them</title>
674
675 <tgroup cols='2'>
676 <colspec colname='path' />
677 <colspec colname='expl' />
678 <thead>
679 <row>
680 <entry>Restart settings/Exit causes</entry>
681 <entry><option>no</option></entry>
682 <entry><option>always</option></entry>
683 <entry><option>on-success</option></entry>
684 <entry><option>on-failure</option></entry>
685 <entry><option>on-abnormal</option></entry>
686 <entry><option>on-abort</option></entry>
687 <entry><option>on-watchdog</option></entry>
688 </row>
689 </thead>
690 <tbody>
691 <row>
692 <entry>Clean exit code or signal</entry>
693 <entry/>
694 <entry>X</entry>
695 <entry>X</entry>
696 <entry/>
697 <entry/>
698 <entry/>
699 <entry/>
700 </row>
701 <row>
702 <entry>Unclean exit code</entry>
703 <entry/>
704 <entry>X</entry>
705 <entry/>
706 <entry>X</entry>
707 <entry/>
708 <entry/>
709 <entry/>
710 </row>
711 <row>
712 <entry>Unclean signal</entry>
713 <entry/>
714 <entry>X</entry>
715 <entry/>
716 <entry>X</entry>
717 <entry>X</entry>
718 <entry>X</entry>
719 <entry/>
720 </row>
721 <row>
722 <entry>Timeout</entry>
723 <entry/>
724 <entry>X</entry>
725 <entry/>
726 <entry>X</entry>
727 <entry>X</entry>
728 <entry/>
729 <entry/>
730 </row>
731 <row>
732 <entry>Watchdog</entry>
733 <entry/>
734 <entry>X</entry>
735 <entry/>
736 <entry>X</entry>
737 <entry>X</entry>
738 <entry/>
739 <entry>X</entry>
740 </row>
741 </tbody>
742 </tgroup>
743 </table>
744
745 <para>As exceptions to the setting above, the service will not
746 be restarted if the exit code or signal is specified in
747 <varname>RestartPreventExitStatus=</varname> (see below) or
748 the service is stopped with <command>systemctl stop</command>
749 or an equivalent operation. Also, the services will always be
750 restarted if the exit code or signal is specified in
751 <varname>RestartForceExitStatus=</varname> (see below).</para>
752
753 <para>Note that service restart is subject to unit start rate
754 limiting configured with <varname>StartLimitIntervalSec=</varname>
755 and <varname>StartLimitBurst=</varname>, see
756 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
757 for details. A restarted service enters the failed state only
758 after the start limits are reached.</para>
759
760 <para>Setting this to <option>on-failure</option> is the
761 recommended choice for long-running services, in order to
762 increase reliability by attempting automatic recovery from
763 errors. For services that shall be able to terminate on their
764 own choice (and avoid immediate restarting),
765 <option>on-abnormal</option> is an alternative choice.</para>
766 </listitem>
767 </varlistentry>
768
769 <varlistentry>
770 <term><varname>SuccessExitStatus=</varname></term>
771 <listitem><para>Takes a list of exit status definitions that,
772 when returned by the main service process, will be considered
773 successful termination, in addition to the normal successful
774 exit code 0 and the signals <constant>SIGHUP</constant>,
775 <constant>SIGINT</constant>, <constant>SIGTERM</constant>, and
776 <constant>SIGPIPE</constant>. Exit status definitions can
777 either be numeric exit codes or termination signal names,
778 separated by spaces. For example:
779
780 <programlisting>SuccessExitStatus=1 2 8 SIGKILL</programlisting>
781
782 ensures that exit codes 1, 2, 8 and
783 the termination signal <constant>SIGKILL</constant> are
784 considered clean service terminations.
785 </para>
786
787 <para>This option may appear more than once, in which case the
788 list of successful exit statuses is merged. If the empty
789 string is assigned to this option, the list is reset, all
790 prior assignments of this option will have no
791 effect.</para></listitem>
792 </varlistentry>
793
794 <varlistentry>
795 <term><varname>RestartPreventExitStatus=</varname></term>
796 <listitem><para>Takes a list of exit status definitions that,
797 when returned by the main service process, will prevent
798 automatic service restarts, regardless of the restart setting
799 configured with <varname>Restart=</varname>. Exit status
800 definitions can either be numeric exit codes or termination
801 signal names, and are separated by spaces. Defaults to the
802 empty list, so that, by default, no exit status is excluded
803 from the configured restart logic. For example:
804
805 <programlisting>RestartPreventExitStatus=1 6 SIGABRT</programlisting>
806
807 ensures that exit codes 1 and 6 and the termination signal
808 <constant>SIGABRT</constant> will not result in automatic
809 service restarting. This option may appear more than once, in
810 which case the list of restart-preventing statuses is
811 merged. If the empty string is assigned to this option, the
812 list is reset and all prior assignments of this option will
813 have no effect.</para></listitem>
814 </varlistentry>
815
816 <varlistentry>
817 <term><varname>RestartForceExitStatus=</varname></term>
818 <listitem><para>Takes a list of exit status definitions that,
819 when returned by the main service process, will force automatic
820 service restarts, regardless of the restart setting configured
821 with <varname>Restart=</varname>. The argument format is
822 similar to
823 <varname>RestartPreventExitStatus=</varname>.</para></listitem>
824 </varlistentry>
825
826 <varlistentry>
827 <term><varname>PermissionsStartOnly=</varname></term>
828 <listitem><para>Takes a boolean argument. If true, the
829 permission-related execution options, as configured with
830 <varname>User=</varname> and similar options (see
831 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
832 for more information), are only applied to the process started
833 with
834 <varname>ExecStart=</varname>, and not to the various other
835 <varname>ExecStartPre=</varname>,
836 <varname>ExecStartPost=</varname>,
837 <varname>ExecReload=</varname>,
838 <varname>ExecStop=</varname>, and
839 <varname>ExecStopPost=</varname>
840 commands. If false, the setting is applied to all configured
841 commands the same way. Defaults to false.</para></listitem>
842 </varlistentry>
843
844 <varlistentry>
845 <term><varname>RootDirectoryStartOnly=</varname></term>
846 <listitem><para>Takes a boolean argument. If true, the root
847 directory, as configured with the
848 <varname>RootDirectory=</varname> option (see
849 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
850 for more information), is only applied to the process started
851 with <varname>ExecStart=</varname>, and not to the various
852 other <varname>ExecStartPre=</varname>,
853 <varname>ExecStartPost=</varname>,
854 <varname>ExecReload=</varname>, <varname>ExecStop=</varname>,
855 and <varname>ExecStopPost=</varname> commands. If false, the
856 setting is applied to all configured commands the same way.
857 Defaults to false.</para></listitem>
858 </varlistentry>
859
860 <varlistentry>
861 <term><varname>NonBlocking=</varname></term>
862 <listitem><para>Set the <constant>O_NONBLOCK</constant> flag for all file descriptors passed via socket-based
863 activation. If true, all file descriptors >= 3 (i.e. all except stdin, stdout, stderr), excluding those passed
864 in via the file descriptor storage logic (see <varname>FileDescriptorStoreMax=</varname> for details), will
865 have the <constant>O_NONBLOCK</constant> flag set and hence are in non-blocking mode. This option is only
866 useful in conjunction with a socket unit, as described in
867 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry> and has no
868 effect on file descriptors which were previously saved in the file-descriptor store for example. Defaults to
869 false.</para></listitem>
870 </varlistentry>
871
872 <varlistentry>
873 <term><varname>NotifyAccess=</varname></term>
874 <listitem><para>Controls access to the service status notification socket, as accessible via the
875 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry> call. Takes one
876 of <option>none</option> (the default), <option>main</option>, <option>exec</option> or
877 <option>all</option>. If <option>none</option>, no daemon status updates are accepted from the service
878 processes, all status update messages are ignored. If <option>main</option>, only service updates sent from the
879 main process of the service are accepted. If <option>exec</option>, only service updates sent from any of the
880 main or control processes originating from one of the <varname>Exec*=</varname> commands are accepted. If
881 <option>all</option>, all services updates from all members of the service's control group are accepted. This
882 option should be set to open access to the notification socket when using <varname>Type=notify</varname> or
883 <varname>WatchdogSec=</varname> (see above). If those options are used but <varname>NotifyAccess=</varname> is
884 not configured, it will be implicitly set to <option>main</option>.</para>
885
886 <para>Note that <function>sd_notify()</function> notifications may be attributed to units correctly only if
887 either the sending process is still around at the time PID 1 processes the message, or if the sending process
888 is explicitly runtime-tracked by the service manager. The latter is the case if the service manager originally
889 forked off the process, i.e. on all processes that match <option>main</option> or
890 <option>exec</option>. Conversely, if an auxiliary process of the unit sends an
891 <function>sd_notify()</function> message and immediately exits, the service manager might not be able to
892 properly attribute the message to the unit, and thus will ignore it, even if
893 <varname>NotifyAccess=</varname><option>all</option> is set for it.</para></listitem>
894 </varlistentry>
895
896 <varlistentry>
897 <term><varname>Sockets=</varname></term>
898 <listitem><para>Specifies the name of the socket units this
899 service shall inherit socket file descriptors from when the
900 service is started. Normally, it should not be necessary to use
901 this setting, as all socket file descriptors whose unit shares
902 the same name as the service (subject to the different unit
903 name suffix of course) are passed to the spawned
904 process.</para>
905
906 <para>Note that the same socket file descriptors may be passed
907 to multiple processes simultaneously. Also note that a
908 different service may be activated on incoming socket traffic
909 than the one which is ultimately configured to inherit the
910 socket file descriptors. Or, in other words: the
911 <varname>Service=</varname> setting of
912 <filename>.socket</filename> units does not have to match the
913 inverse of the <varname>Sockets=</varname> setting of the
914 <filename>.service</filename> it refers to.</para>
915
916 <para>This option may appear more than once, in which case the
917 list of socket units is merged. If the empty string is
918 assigned to this option, the list of sockets is reset, and all
919 prior uses of this setting will have no
920 effect.</para></listitem>
921 </varlistentry>
922
923 <varlistentry>
924 <term><varname>FileDescriptorStoreMax=</varname></term>
925 <listitem><para>Configure how many file descriptors may be stored in the service manager for the service using
926 <citerefentry><refentrytitle>sd_pid_notify_with_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>'s
927 <literal>FDSTORE=1</literal> messages. This is useful for implementing services that can restart after an
928 explicit request or a crash without losing state. Any open sockets and other file descriptors which should not
929 be closed during the restart may be stored this way. Application state can either be serialized to a file in
930 <filename>/run</filename>, or better, stored in a
931 <citerefentry><refentrytitle>memfd_create</refentrytitle><manvolnum>2</manvolnum></citerefentry> memory file
932 descriptor. Defaults to 0, i.e. no file descriptors may be stored in the service manager. All file descriptors
933 passed to the service manager from a specific service are passed back to the service's main process on the next
934 service restart. Any file descriptors passed to the service manager are automatically closed when
935 <constant>POLLHUP</constant> or <constant>POLLERR</constant> is seen on them, or when the service is fully
936 stopped and no job is queued or being executed for it.</para></listitem>
937 </varlistentry>
938
939 <varlistentry>
940 <term><varname>USBFunctionDescriptors=</varname></term>
941 <listitem><para>Configure the location of a file containing
942 <ulink
943 url="https://www.kernel.org/doc/Documentation/usb/functionfs.txt">USB
944 FunctionFS</ulink> descriptors, for implementation of USB
945 gadget functions. This is used only in conjunction with a
946 socket unit with <varname>ListenUSBFunction=</varname>
947 configured. The contents of this file are written to the
948 <filename>ep0</filename> file after it is
949 opened.</para></listitem>
950 </varlistentry>
951
952 <varlistentry>
953 <term><varname>USBFunctionStrings=</varname></term>
954 <listitem><para>Configure the location of a file containing
955 USB FunctionFS strings. Behavior is similar to
956 <varname>USBFunctionDescriptors=</varname>
957 above.</para></listitem>
958 </varlistentry>
959
960 </variablelist>
961
962 <para>Check
963 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
964 and
965 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
966 for more settings.</para>
967
968 </refsect1>
969
970 <refsect1>
971 <title>Command lines</title>
972
973 <para>This section describes command line parsing and
974 variable and specifier substitutions for
975 <varname>ExecStart=</varname>,
976 <varname>ExecStartPre=</varname>,
977 <varname>ExecStartPost=</varname>,
978 <varname>ExecReload=</varname>,
979 <varname>ExecStop=</varname>, and
980 <varname>ExecStopPost=</varname> options.</para>
981
982 <para>Multiple command lines may be concatenated in a single
983 directive by separating them with semicolons (these semicolons
984 must be passed as separate words). Lone semicolons may be escaped
985 as <literal>\;</literal>.</para>
986
987 <para>Each command line is split on whitespace, with the first item being the command to
988 execute, and the subsequent items being the arguments. Double quotes ("…") and single quotes
989 ('…') may be used to wrap a whole item (the opening quote may appear only at the beginning or
990 after whitespace that is not quoted, and the closing quote must be followed by whitespace or the
991 end of line), in which case everything until the next matching quote becomes part of the same
992 argument. Quotes themselves are removed. C-style escapes are also supported. The table below
993 contains the list of known escape patterns. Only escape patterns which match the syntax in the
994 table are allowed; other patterns may be added in the future and unknown patterns will result in
995 a warning. In particular, any backslashes should be doubled. Finally, a trailing backslash
996 (<literal>\</literal>) may be used to merge lines.</para>
997
998 <para>This syntax is inspired by shell syntax, but only the meta-characters and expansions
999 described in the following paragraphs are understood, and the expansion of variables is
1000 different. Specifically, redirection using
1001 <literal>&lt;</literal>,
1002 <literal>&lt;&lt;</literal>,
1003 <literal>&gt;</literal>, and
1004 <literal>&gt;&gt;</literal>, pipes using
1005 <literal>|</literal>, running programs in the background using
1006 <literal>&amp;</literal>, and <emphasis>other elements of shell
1007 syntax are not supported</emphasis>.</para>
1008
1009 <para>The command to execute must be an absolute path name. It may
1010 contain spaces, but control characters are not allowed.</para>
1011
1012 <para>The command line accepts <literal>%</literal> specifiers as
1013 described in
1014 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
1015 Note that the first argument of the command line (i.e. the program
1016 to execute) may not include specifiers.</para>
1017
1018 <para>Basic environment variable substitution is supported. Use
1019 <literal>${FOO}</literal> as part of a word, or as a word of its
1020 own, on the command line, in which case it will be replaced by the
1021 value of the environment variable including all whitespace it
1022 contains, resulting in a single argument. Use
1023 <literal>$FOO</literal> as a separate word on the command line, in
1024 which case it will be replaced by the value of the environment
1025 variable split at whitespace, resulting in zero or more arguments.
1026 For this type of expansion, quotes are respected when splitting
1027 into words, and afterwards removed.</para>
1028
1029 <para>Example:</para>
1030
1031 <programlisting>Environment="ONE=one" 'TWO=two two'
1032 ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
1033
1034 <para>This will execute <command>/bin/echo</command> with four
1035 arguments: <literal>one</literal>, <literal>two</literal>,
1036 <literal>two</literal>, and <literal>two two</literal>.</para>
1037
1038 <para>Example:</para>
1039 <programlisting>Environment=ONE='one' "TWO='two two' too" THREE=
1040 ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
1041 ExecStart=/bin/echo $ONE $TWO $THREE</programlisting>
1042 <para>This results in <filename>echo</filename> being
1043 called twice, the first time with arguments
1044 <literal>'one'</literal>,
1045 <literal>'two two' too</literal>, <literal></literal>,
1046 and the second time with arguments
1047 <literal>one</literal>, <literal>two two</literal>,
1048 <literal>too</literal>.
1049 </para>
1050
1051 <para>To pass a literal dollar sign, use <literal>$$</literal>.
1052 Variables whose value is not known at expansion time are treated
1053 as empty strings. Note that the first argument (i.e. the program
1054 to execute) may not be a variable.</para>
1055
1056 <para>Variables to be used in this fashion may be defined through
1057 <varname>Environment=</varname> and
1058 <varname>EnvironmentFile=</varname>. In addition, variables listed
1059 in the section "Environment variables in spawned processes" in
1060 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1061 which are considered "static configuration", may be used (this
1062 includes e.g. <varname>$USER</varname>, but not
1063 <varname>$TERM</varname>).</para>
1064
1065 <para>Note that shell command lines are not directly supported. If
1066 shell command lines are to be used, they need to be passed
1067 explicitly to a shell implementation of some kind. Example:</para>
1068 <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'</programlisting>
1069
1070 <para>Example:</para>
1071
1072 <programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"</programlisting>
1073
1074 <para>This will execute <command>/bin/echo</command> two times,
1075 each time with one argument: <literal>one</literal> and
1076 <literal>two two</literal>, respectively. Because two commands are
1077 specified, <varname>Type=oneshot</varname> must be used.</para>
1078
1079 <para>Example:</para>
1080
1081 <programlisting>ExecStart=/bin/echo / &gt;/dev/null &amp; \; \
1082 /bin/ls</programlisting>
1083
1084 <para>This will execute <command>/bin/echo</command>
1085 with five arguments: <literal>/</literal>,
1086 <literal>&gt;/dev/null</literal>,
1087 <literal>&amp;</literal>, <literal>;</literal>, and
1088 <literal>/bin/ls</literal>.</para>
1089
1090 <table>
1091 <title>C escapes supported in command lines and environment variables</title>
1092 <tgroup cols='2'>
1093 <colspec colname='escape' />
1094 <colspec colname='meaning' />
1095 <thead>
1096 <row>
1097 <entry>Literal</entry>
1098 <entry>Actual value</entry>
1099 </row>
1100 </thead>
1101 <tbody>
1102 <row>
1103 <entry><literal>\a</literal></entry>
1104 <entry>bell</entry>
1105 </row>
1106 <row>
1107 <entry><literal>\b</literal></entry>
1108 <entry>backspace</entry>
1109 </row>
1110 <row>
1111 <entry><literal>\f</literal></entry>
1112 <entry>form feed</entry>
1113 </row>
1114 <row>
1115 <entry><literal>\n</literal></entry>
1116 <entry>newline</entry>
1117 </row>
1118 <row>
1119 <entry><literal>\r</literal></entry>
1120 <entry>carriage return</entry>
1121 </row>
1122 <row>
1123 <entry><literal>\t</literal></entry>
1124 <entry>tab</entry>
1125 </row>
1126 <row>
1127 <entry><literal>\v</literal></entry>
1128 <entry>vertical tab</entry>
1129 </row>
1130 <row>
1131 <entry><literal>\\</literal></entry>
1132 <entry>backslash</entry>
1133 </row>
1134 <row>
1135 <entry><literal>\"</literal></entry>
1136 <entry>double quotation mark</entry>
1137 </row>
1138 <row>
1139 <entry><literal>\'</literal></entry>
1140 <entry>single quotation mark</entry>
1141 </row>
1142 <row>
1143 <entry><literal>\s</literal></entry>
1144 <entry>space</entry>
1145 </row>
1146 <row>
1147 <entry><literal>\x<replaceable>xx</replaceable></literal></entry>
1148 <entry>character number <replaceable>xx</replaceable> in hexadecimal encoding</entry>
1149 </row>
1150 <row>
1151 <entry><literal>\<replaceable>nnn</replaceable></literal></entry>
1152 <entry>character number <replaceable>nnn</replaceable> in octal encoding</entry>
1153 </row>
1154 </tbody>
1155 </tgroup>
1156 </table>
1157 </refsect1>
1158
1159 <refsect1>
1160 <title>Examples</title>
1161
1162 <example>
1163 <title>Simple service</title>
1164
1165 <para>The following unit file creates a service that will
1166 execute <filename>/usr/sbin/foo-daemon</filename>. Since no
1167 <varname>Type=</varname> is specified, the default
1168 <varname>Type=</varname><option>simple</option> will be assumed.
1169 systemd will assume the unit to be started immediately after the
1170 program has begun executing.</para>
1171
1172 <programlisting>[Unit]
1173 Description=Foo
1174
1175 [Service]
1176 ExecStart=/usr/sbin/foo-daemon
1177
1178 [Install]
1179 WantedBy=multi-user.target</programlisting>
1180
1181 <para>Note that systemd assumes here that the process started by
1182 systemd will continue running until the service terminates. If
1183 the program daemonizes itself (i.e. forks), please use
1184 <varname>Type=</varname><option>forking</option> instead.</para>
1185
1186 <para>Since no <varname>ExecStop=</varname> was specified,
1187 systemd will send SIGTERM to all processes started from this
1188 service, and after a timeout also SIGKILL. This behavior can be
1189 modified, see
1190 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
1191 for details.</para>
1192
1193 <para>Note that this unit type does not include any type of
1194 notification when a service has completed initialization. For
1195 this, you should use other unit types, such as
1196 <varname>Type=</varname><option>notify</option> if the service
1197 understands systemd's notification protocol,
1198 <varname>Type=</varname><option>forking</option> if the service
1199 can background itself or
1200 <varname>Type=</varname><option>dbus</option> if the unit
1201 acquires a DBus name once initialization is complete. See
1202 below.</para>
1203 </example>
1204
1205 <example>
1206 <title>Oneshot service</title>
1207
1208 <para>Sometimes, units should just execute an action without
1209 keeping active processes, such as a filesystem check or a
1210 cleanup action on boot. For this,
1211 <varname>Type=</varname><option>oneshot</option> exists. Units
1212 of this type will wait until the process specified terminates
1213 and then fall back to being inactive. The following unit will
1214 perform a cleanup action:</para>
1215
1216 <programlisting>[Unit]
1217 Description=Cleanup old Foo data
1218
1219 [Service]
1220 Type=oneshot
1221 ExecStart=/usr/sbin/foo-cleanup
1222
1223 [Install]
1224 WantedBy=multi-user.target</programlisting>
1225
1226 <para>Note that systemd will consider the unit to be in the
1227 state "starting" until the program has terminated, so ordered
1228 dependencies will wait for the program to finish before starting
1229 themselves. The unit will revert to the "inactive" state after
1230 the execution is done, never reaching the "active" state. That
1231 means another request to start the unit will perform the action
1232 again.</para>
1233
1234 <para><varname>Type=</varname><option>oneshot</option> are the
1235 only service units that may have more than one
1236 <varname>ExecStart=</varname> specified. They will be executed
1237 in order until either they are all successful or one of them
1238 fails.</para>
1239 </example>
1240
1241 <example>
1242 <title>Stoppable oneshot service</title>
1243
1244 <para>Similarly to the oneshot services, there are sometimes
1245 units that need to execute a program to set up something and
1246 then execute another to shut it down, but no process remains
1247 active while they are considered "started". Network
1248 configuration can sometimes fall into this category. Another use
1249 case is if a oneshot service shall not be executed each time
1250 when they are pulled in as a dependency, but only the first
1251 time.</para>
1252
1253 <para>For this, systemd knows the setting
1254 <varname>RemainAfterExit=</varname><option>yes</option>, which
1255 causes systemd to consider the unit to be active if the start
1256 action exited successfully. This directive can be used with all
1257 types, but is most useful with
1258 <varname>Type=</varname><option>oneshot</option> and
1259 <varname>Type=</varname><option>simple</option>. With
1260 <varname>Type=</varname><option>oneshot</option>, systemd waits
1261 until the start action has completed before it considers the
1262 unit to be active, so dependencies start only after the start
1263 action has succeeded. With
1264 <varname>Type=</varname><option>simple</option>, dependencies
1265 will start immediately after the start action has been
1266 dispatched. The following unit provides an example for a simple
1267 static firewall.</para>
1268
1269 <programlisting>[Unit]
1270 Description=Simple firewall
1271
1272 [Service]
1273 Type=oneshot
1274 RemainAfterExit=yes
1275 ExecStart=/usr/local/sbin/simple-firewall-start
1276 ExecStop=/usr/local/sbin/simple-firewall-stop
1277
1278 [Install]
1279 WantedBy=multi-user.target</programlisting>
1280
1281 <para>Since the unit is considered to be running after the start
1282 action has exited, invoking <command>systemctl start</command>
1283 on that unit again will cause no action to be taken.</para>
1284 </example>
1285
1286 <example>
1287 <title>Traditional forking services</title>
1288
1289 <para>Many traditional daemons/services background (i.e. fork,
1290 daemonize) themselves when starting. Set
1291 <varname>Type=</varname><option>forking</option> in the
1292 service's unit file to support this mode of operation. systemd
1293 will consider the service to be in the process of initialization
1294 while the original program is still running. Once it exits
1295 successfully and at least a process remains (and
1296 <varname>RemainAfterExit=</varname><option>no</option>), the
1297 service is considered started.</para>
1298
1299 <para>Often, a traditional daemon only consists of one process.
1300 Therefore, if only one process is left after the original
1301 process terminates, systemd will consider that process the main
1302 process of the service. In that case, the
1303 <varname>$MAINPID</varname> variable will be available in
1304 <varname>ExecReload=</varname>, <varname>ExecStop=</varname>,
1305 etc.</para>
1306
1307 <para>In case more than one process remains, systemd will be
1308 unable to determine the main process, so it will not assume
1309 there is one. In that case, <varname>$MAINPID</varname> will not
1310 expand to anything. However, if the process decides to write a
1311 traditional PID file, systemd will be able to read the main PID
1312 from there. Please set <varname>PIDFile=</varname> accordingly.
1313 Note that the daemon should write that file before finishing
1314 with its initialization. Otherwise, systemd might try to read the
1315 file before it exists.</para>
1316
1317 <para>The following example shows a simple daemon that forks and
1318 just starts one process in the background:</para>
1319
1320 <programlisting>[Unit]
1321 Description=Some simple daemon
1322
1323 [Service]
1324 Type=forking
1325 ExecStart=/usr/sbin/my-simple-daemon -d
1326
1327 [Install]
1328 WantedBy=multi-user.target</programlisting>
1329
1330 <para>Please see
1331 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
1332 for details on how you can influence the way systemd terminates
1333 the service.</para>
1334 </example>
1335
1336 <example>
1337 <title>DBus services</title>
1338
1339 <para>For services that acquire a name on the DBus system bus,
1340 use <varname>Type=</varname><option>dbus</option> and set
1341 <varname>BusName=</varname> accordingly. The service should not
1342 fork (daemonize). systemd will consider the service to be
1343 initialized once the name has been acquired on the system bus.
1344 The following example shows a typical DBus service:</para>
1345
1346 <programlisting>[Unit]
1347 Description=Simple DBus service
1348
1349 [Service]
1350 Type=dbus
1351 BusName=org.example.simple-dbus-service
1352 ExecStart=/usr/sbin/simple-dbus-service
1353
1354 [Install]
1355 WantedBy=multi-user.target</programlisting>
1356
1357 <para>For <emphasis>bus-activatable</emphasis> services, do not
1358 include a <literal>[Install]</literal> section in the systemd
1359 service file, but use the <varname>SystemdService=</varname>
1360 option in the corresponding DBus service file, for example
1361 (<filename>/usr/share/dbus-1/system-services/org.example.simple-dbus-service.service</filename>):</para>
1362
1363 <programlisting>[D-BUS Service]
1364 Name=org.example.simple-dbus-service
1365 Exec=/usr/sbin/simple-dbus-service
1366 User=root
1367 SystemdService=simple-dbus-service.service</programlisting>
1368
1369 <para>Please see
1370 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
1371 for details on how you can influence the way systemd terminates
1372 the service.</para>
1373 </example>
1374
1375 <example>
1376 <title>Services that notify systemd about their initialization</title>
1377
1378 <para><varname>Type=</varname><option>simple</option> services
1379 are really easy to write, but have the major disadvantage of
1380 systemd not being able to tell when initialization of the given
1381 service is complete. For this reason, systemd supports a simple
1382 notification protocol that allows daemons to make systemd aware
1383 that they are done initializing. Use
1384 <varname>Type=</varname><option>notify</option> for this. A
1385 typical service file for such a daemon would look like
1386 this:</para>
1387
1388 <programlisting>[Unit]
1389 Description=Simple notifying service
1390
1391 [Service]
1392 Type=notify
1393 ExecStart=/usr/sbin/simple-notifying-service
1394
1395 [Install]
1396 WantedBy=multi-user.target</programlisting>
1397
1398 <para>Note that the daemon has to support systemd's notification
1399 protocol, else systemd will think the service has not started yet
1400 and kill it after a timeout. For an example of how to update
1401 daemons to support this protocol transparently, take a look at
1402 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
1403 systemd will consider the unit to be in the 'starting' state
1404 until a readiness notification has arrived.</para>
1405
1406 <para>Please see
1407 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
1408 for details on how you can influence the way systemd terminates
1409 the service.</para>
1410 </example>
1411 </refsect1>
1412
1413 <refsect1>
1414 <title>See Also</title>
1415 <para>
1416 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1417 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1418 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1419 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1420 <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1421 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1422 <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
1423 </para>
1424 </refsect1>
1425
1426 </refentry>