]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/systemd.unit.xml
man: drop unused <authorgroup> tags from man sources
[thirdparty/systemd.git] / man / systemd.unit.xml
CommitLineData
c129bd5d 1<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
d1ab0ca0 2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
798d3a52 3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
1a13e31d
ZJS
4<!ENTITY % entities SYSTEM "custom-entities.ent" >
5%entities;
6]>
d1ab0ca0
LP
7
8<!--
572eb058 9 SPDX-License-Identifier: LGPL-2.1+
d1ab0ca0
LP
10-->
11
12<refentry id="systemd.unit">
13
798d3a52
ZJS
14 <refentryinfo>
15 <title>systemd.unit</title>
16 <productname>systemd</productname>
798d3a52
ZJS
17 </refentryinfo>
18
19 <refmeta>
20 <refentrytitle>systemd.unit</refentrytitle>
21 <manvolnum>5</manvolnum>
22 </refmeta>
23
24 <refnamediv>
25 <refname>systemd.unit</refname>
26 <refpurpose>Unit configuration</refpurpose>
27 </refnamediv>
28
29 <refsynopsisdiv>
30 <para><filename><replaceable>service</replaceable>.service</filename>,
31 <filename><replaceable>socket</replaceable>.socket</filename>,
32 <filename><replaceable>device</replaceable>.device</filename>,
33 <filename><replaceable>mount</replaceable>.mount</filename>,
34 <filename><replaceable>automount</replaceable>.automount</filename>,
35 <filename><replaceable>swap</replaceable>.swap</filename>,
36 <filename><replaceable>target</replaceable>.target</filename>,
37 <filename><replaceable>path</replaceable>.path</filename>,
38 <filename><replaceable>timer</replaceable>.timer</filename>,
798d3a52
ZJS
39 <filename><replaceable>slice</replaceable>.slice</filename>,
40 <filename><replaceable>scope</replaceable>.scope</filename></para>
41
b82f27e7
ZJS
42 <para><literallayout><filename>/etc/systemd/system.control/*</filename>
43<filename>/run/systemd/system.control/*</filename>
44<filename>/run/systemd/transient/*</filename>
45<filename>/run/systemd/generator.early/*</filename>
46<filename>/etc/systemd/system/*</filename>
13219b7f 47<filename>/run/systemd/system/*</filename>
b82f27e7 48<filename>/run/systemd/generator/*</filename>
f6e1bd2c 49<filename>…</filename>
b82f27e7
ZJS
50<filename>/usr/lib/systemd/system/*</filename>
51<filename>/run/systemd/generator.late/*</filename>
798d3a52 52 </literallayout></para>
13219b7f 53
b82f27e7
ZJS
54 <para><literallayout><filename>~/.config/systemd/user.control/*</filename>
55<filename>$XDG_RUNTIME_DIR/systemd/user.control/*</filename>
56<filename>$XDG_RUNTIME_DIR/systemd/transient/*</filename>
57<filename>$XDG_RUNTIME_DIR/systemd/generator.early/*</filename>
58<filename>~/.config/systemd/user/*</filename>
12b42c76 59<filename>/etc/systemd/user/*</filename>
aa08982d 60<filename>$XDG_RUNTIME_DIR/systemd/user/*</filename>
13219b7f 61<filename>/run/systemd/user/*</filename>
b82f27e7 62<filename>$XDG_RUNTIME_DIR/systemd/generator/*</filename>
f6e1bd2c 63<filename>~/.local/share/systemd/user/*</filename>
f6e1bd2c 64<filename>…</filename>
b82f27e7
ZJS
65<filename>/usr/lib/systemd/user/*</filename>
66<filename>$XDG_RUNTIME_DIR/systemd/generator.late/*</filename>
798d3a52
ZJS
67 </literallayout></para>
68 </refsynopsisdiv>
69
70 <refsect1>
71 <title>Description</title>
72
0f943ae4
ZJS
73 <para>A unit file is a plain text ini-style file that encodes information about a service, a
74 socket, a device, a mount point, an automount point, a swap file or partition, a start-up
75 target, a watched file system path, a timer controlled and supervised by
76 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, a
77 resource management slice or a group of externally created processes. See
78 <citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>5</manvolnum></citerefentry>
79 for a general description of the syntax.</para>
798d3a52
ZJS
80
81 <para>This man page lists the common configuration options of all
82 the unit types. These options need to be configured in the [Unit]
83 or [Install] sections of the unit files.</para>
84
85 <para>In addition to the generic [Unit] and [Install] sections
86 described here, each unit may have a type-specific section, e.g.
87 [Service] for a service unit. See the respective man pages for
88 more information:
89 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
90 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
91 <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
92 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
93 <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
94 <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
95 <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
96 <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
97 <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
36b4a7ba 98 <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
798d3a52
ZJS
99 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
100 </para>
101
798d3a52
ZJS
102 <para>Unit files are loaded from a set of paths determined during
103 compilation, described in the next section.</para>
104
75695fb7
ZJS
105 <para>Unit files can be parameterized by a single argument called the "instance name". The unit
106 is then constructed based on a "template file" which serves as the definition of multiple
107 services or other units. A template unit must have a single <literal>@</literal> at the end of
108 the name (right before the type suffix). The name of the full unit is formed by inserting the
109 instance name between <literal>@</literal> and the unit type suffix. In the unit file itself,
110 the instance parameter may be referred to using <literal>%i</literal> and other specifiers, see
111 below.</para>
112
798d3a52
ZJS
113 <para>Unit files may contain additional options on top of those
114 listed here. If systemd encounters an unknown option, it will
115 write a warning log message but continue loading the unit. If an
116 option or section name is prefixed with <option>X-</option>, it is
117 ignored completely by systemd. Options within an ignored section
118 do not need the prefix. Applications may use this to include
119 additional information in the unit files.</para>
120
121 <para>Boolean arguments used in unit files can be written in
122 various formats. For positive settings the strings
123 <option>1</option>, <option>yes</option>, <option>true</option>
124 and <option>on</option> are equivalent. For negative settings, the
125 strings <option>0</option>, <option>no</option>,
126 <option>false</option> and <option>off</option> are
127 equivalent.</para>
128
bac150e9
ZJS
129 <para>Time span values encoded in unit files can be written in various formats. A stand-alone
130 number specifies a time in seconds. If suffixed with a time unit, the unit is honored. A
131 concatenation of multiple values with units is supported, in which case the values are added
132 up. Example: <literal>50</literal> refers to 50 seconds; <literal>2min 200ms</literal> refers to
133 2 minutes and 200 milliseconds, i.e. 120200 ms. The following time units are understood:
134 <literal>s</literal>, <literal>min</literal>, <literal>h</literal>, <literal>d</literal>,
d923e42e 135 <literal>w</literal>, <literal>ms</literal>, <literal>us</literal>. For details see
798d3a52
ZJS
136 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
137
bac150e9
ZJS
138 <para>Units can be aliased (have an alternative name), by creating a symlink from the new name
139 to the existing name in one of the unit search paths. For example,
140 <filename>systemd-networkd.service</filename> has the alias
141 <filename>dbus-org.freedesktop.network1.service</filename>, created during installation as the
142 symlink <filename>/usr/lib/systemd/system/dbus-org.freedesktop.network1.service</filename>. In
143 addition, unit files may specify aliases through the <varname>Alias=</varname> directive in the
144 [Install] section; those aliases are only effective when the unit is enabled. When the unit is
145 enabled, symlinks will be created for those names, and removed when the unit is disabled. For
146 example, <filename>reboot.target</filename> specifies
147 <varname>Alias=ctrl-alt-del.target</varname>, so when enabled it will be invoked whenever
148 CTRL+ALT+DEL is pressed. Alias names may be used in commands like <command>enable</command>,
149 <command>disable</command>, <command>start</command>, <command>stop</command>,
150 <command>status</command>, …, and in unit dependency directives <varname>Wants=</varname>,
151 <varname>Requires=</varname>, <varname>Before=</varname>, <varname>After=</varname>, …, with the
152 limitation that aliases specified through <varname>Alias=</varname> are only effective when the
153 unit is enabled. Aliases cannot be used with the <command>preset</command> command.</para>
154
155 <para>Along with a unit file <filename>foo.service</filename>, the directory
156 <filename>foo.service.wants/</filename> may exist. All unit files symlinked from such a
157 directory are implicitly added as dependencies of type <varname>Wants=</varname> to the unit.
158 This is useful to hook units into the start-up of other units, without having to modify their
159 unit files. For details about the semantics of <varname>Wants=</varname>, see below. The
160 preferred way to create symlinks in the <filename>.wants/</filename> directory of a unit file is
161 with the <command>enable</command> command of the
798d3a52 162 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
bac150e9
ZJS
163 tool which reads information from the [Install] section of unit files (see below). A similar
164 functionality exists for <varname>Requires=</varname> type dependencies as well, the directory
165 suffix is <filename>.requires/</filename> in this case.</para>
798d3a52 166
be73bb48 167 <para>Along with a unit file <filename>foo.service</filename>, a "drop-in" directory
6c0a7795
LP
168 <filename>foo.service.d/</filename> may exist. All files with the suffix <literal>.conf</literal> from this
169 directory will be parsed after the unit file itself is parsed. This is useful to alter or add configuration
170 settings for a unit, without having to modify unit files. Drop-in files must contain appropriate section
171 headers. For instantiated units, this logic will first look for the instance <literal>.d/</literal> subdirectory
172 (e.g. <literal>foo@bar.service.d/</literal>) and read its <literal>.conf</literal> files, followed by the template
173 <literal>.d/</literal> subdirectory (e.g. <literal>foo@.service.d/</literal>) and the <literal>.conf</literal>
174 files there. Moreover for units names containing dashes (<literal>-</literal>), the set of directories generated by
175 truncating the unit name after all dashes is searched too. Specifically, for a unit name
1b2ad5d9 176 <filename>foo-bar-baz.service</filename> not only the regular drop-in directory
6c0a7795
LP
177 <filename>foo-bar-baz.service.d/</filename> is searched but also both <filename>foo-bar-.service.d/</filename> and
178 <filename>foo-.service.d/</filename>. This is useful for defining common drop-ins for a set of related units, whose
179 names begin with a common prefix. This scheme is particularly useful for mount, automount and slice units, whose
180 systematic naming structure is built around dashes as component separators. Note that equally named drop-in files
181 further down the prefix hierarchy override those further up,
182 i.e. <filename>foo-bar-.service.d/10-override.conf</filename> overrides
183 <filename>foo-.service.d/10-override.conf</filename>.</para>
184
185 <para>In addition to <filename>/etc/systemd/system</filename>, the drop-in <literal>.d/</literal>
bac150e9
ZJS
186 directories for system services can be placed in <filename>/usr/lib/systemd/system</filename> or
187 <filename>/run/systemd/system</filename> directories. Drop-in files in <filename>/etc</filename>
188 take precedence over those in <filename>/run</filename> which in turn take precedence over those
189 in <filename>/usr/lib</filename>. Drop-in files under any of these directories take precedence
8331eaab
LW
190 over unit files wherever located. Multiple drop-in files with different names are applied in
191 lexicographic order, regardless of which of the directories they reside in.</para>
bac150e9
ZJS
192
193 <!-- Note that we do not document .include here, as we consider it mostly obsolete, and want
194 people to use .d/ drop-ins instead. -->
798d3a52 195
bbe0b4a8
JL
196 <para>Note that while systemd offers a flexible dependency system
197 between units it is recommended to use this functionality only
198 sparingly and instead rely on techniques such as bus-based or
199 socket-based activation which make dependencies implicit,
200 resulting in a both simpler and more flexible system.</para>
201
75695fb7
ZJS
202 <para>As mentioned above, a unit may be instantiated from a template file. This allows creation
203 of multiple units from a single configuration file. If systemd looks for a unit configuration
204 file, it will first search for the literal unit name in the file system. If that yields no
205 success and the unit name contains an <literal>@</literal> character, systemd will look for a
206 unit template that shares the same name but with the instance string (i.e. the part between the
207 <literal>@</literal> character and the suffix) removed. Example: if a service
208 <filename>getty@tty3.service</filename> is requested and no file by that name is found, systemd
209 will look for <filename>getty@.service</filename> and instantiate a service from that
210 configuration file if it is found.</para>
798d3a52
ZJS
211
212 <para>To refer to the instance string from within the
213 configuration file you may use the special <literal>%i</literal>
214 specifier in many of the configuration options. See below for
215 details.</para>
216
217 <para>If a unit file is empty (i.e. has the file size 0) or is
218 symlinked to <filename>/dev/null</filename>, its configuration
219 will not be loaded and it appears with a load state of
220 <literal>masked</literal>, and cannot be activated. Use this as an
221 effective way to fully disable a unit, making it impossible to
222 start it even manually.</para>
223
224 <para>The unit file format is covered by the
225 <ulink
28a0ad81 226 url="https://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface
798d3a52
ZJS
227 Stability Promise</ulink>.</para>
228
229 </refsect1>
230
2651d037
LP
231 <refsect1>
232 <title>String Escaping for Inclusion in Unit Names</title>
233
234 <para>Sometimes it is useful to convert arbitrary strings into unit names. To facilitate this, a method of string
235 escaping is used, in order to map strings containing arbitrary byte values (except NUL) into valid unit names and
236 their restricted character set. A common special case are unit names that reflect paths to objects in the file
237 system hierarchy. Example: a device unit <filename>dev-sda.device</filename> refers to a device with the device
238 node <filename noindex='true'>/dev/sda</filename> in the file system.</para>
239
240 <para>The escaping algorithm operates as follows: given a string, any <literal>/</literal> character is replaced by
241 <literal>-</literal>, and all other characters which are not ASCII alphanumerics or <literal>_</literal> are
242 replaced by C-style <literal>\x2d</literal> escapes. In addition, <literal>.</literal> is replaced with such a
243 C-style escape when it would appear as the first character in the escaped string.</para>
244
245 <para>When the input qualifies as absolute file system path, this algorithm is extended slightly: the path to the
246 root directory <literal>/</literal> is encoded as single dash <literal>-</literal>. In addition, any leading,
247 trailing or duplicate <literal>/</literal> characters are removed from the string before transformation. Example:
248 <filename>/foo//bar/baz/</filename> becomes <literal>foo-bar-baz</literal>.</para>
249
250 <para>This escaping is fully reversible, as long as it is known whether the escaped string was a path (the
251 unescaping results are different for paths and non-path strings). The
252 <citerefentry><refentrytitle>systemd-escape</refentrytitle><manvolnum>1</manvolnum></citerefentry> command may be
253 used to apply and reverse escaping on arbitrary strings. Use <command>systemd-escape --path</command> to escape
254 path strings, and <command>systemd-escape</command> without <option>--path</option> otherwise.</para>
255 </refsect1>
256
c129bd5d 257 <refsect1>
aed5cb03
ZJS
258 <title>Automatic dependencies</title>
259
260 <refsect2>
261 <title>Implicit Dependencies</title>
262
263 <para>A number of unit dependencies are implicitly established, depending on unit type and
264 unit configuration. These implicit dependencies can make unit configuration file cleaner. For
265 the implicit dependencies in each unit type, please refer to section "Implicit Dependencies"
266 in respective man pages.</para>
267
268 <para>For example, service units with <varname>Type=dbus</varname> automatically acquire
269 dependencies of type <varname>Requires=</varname> and <varname>After=</varname> on
270 <filename>dbus.socket</filename>. See
271 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
272 for details.</para>
273 </refsect2>
274
275 <refsect2>
276 <title>Default Dependencies</title>
277
278 <para>Default dependencies are similar to implicit dependencies, but can be turned on and off
279 by setting <varname>DefaultDependencies=</varname> to <varname>yes</varname> (the default) and
280 <varname>no</varname>, while implicit dependencies are always in effect. See section "Default
281 Dependencies" in respective man pages for the effect of enabling
282 <varname>DefaultDependencies=</varname> in each unit types.</para>
283
284 <para>For example, target units will complement all configured dependencies of type
285 <varname>Wants=</varname> or <varname>Requires=</varname> with dependencies of type
286 <varname>After=</varname> unless <varname>DefaultDependencies=no</varname> is set in the
287 specified units. See
288 <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>
289 for details. Note that this behavior can be turned off by setting
290 <varname>DefaultDependencies=no</varname>.</para>
291 </refsect2>
45f09f93
JL
292 </refsect1>
293
798d3a52 294 <refsect1>
f757855e 295 <title>Unit File Load Path</title>
798d3a52
ZJS
296
297 <para>Unit files are loaded from a set of paths determined during
298 compilation, described in the two tables below. Unit files found
299 in directories listed earlier override files with the same name in
300 directories lower in the list.</para>
301
aa3e4400
EV
302 <para>When the variable <varname>$SYSTEMD_UNIT_PATH</varname> is set,
303 the contents of this variable overrides the unit load path. If
798d3a52
ZJS
304 <varname>$SYSTEMD_UNIT_PATH</varname> ends with an empty component
305 (<literal>:</literal>), the usual unit load path will be appended
306 to the contents of the variable.</para>
307
308 <table>
309 <title>
310 Load path when running in system mode (<option>--system</option>).
311 </title>
312
313 <tgroup cols='2'>
314 <colspec colname='path' />
315 <colspec colname='expl' />
316 <thead>
317 <row>
5a15caf4
ZJS
318 <entry>Path</entry>
319 <entry>Description</entry>
798d3a52
ZJS
320 </row>
321 </thead>
322 <tbody>
b82f27e7
ZJS
323 <row>
324 <entry><filename>/etc/systemd/system.control</filename></entry>
325 <entry morerows="1">Persistent and transient configuration created using the dbus API</entry>
326 </row>
327 <row>
328 <entry><filename>/run/systemd/system.control</filename></entry>
329 </row>
330 <row>
331 <entry><filename>/run/systemd/transient</filename></entry>
332 <entry>Dynamic configuration for transient units</entry>
333 </row>
334 <row>
335 <entry><filename>/run/systemd/generator.early</filename></entry>
336 <entry>Generated units with high priority (see <replaceable>early-dir</replaceable> in <citerefentry
337 ><refentrytitle>system.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry>
338 </row>
798d3a52 339 <row>
5a15caf4
ZJS
340 <entry><filename>/etc/systemd/system</filename></entry>
341 <entry>Local configuration</entry>
798d3a52
ZJS
342 </row>
343 <row>
5a15caf4
ZJS
344 <entry><filename>/run/systemd/system</filename></entry>
345 <entry>Runtime units</entry>
798d3a52 346 </row>
b82f27e7
ZJS
347 <row>
348 <entry><filename>/run/systemd/generator</filename></entry>
349 <entry>Generated units with medium priority (see <replaceable>normal-dir</replaceable> in <citerefentry
350 ><refentrytitle>system.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry>
351 </row>
352 <row>
353 <entry><filename>/usr/local/lib/systemd/system</filename></entry>
354 <entry morerows="1">Units of installed packages</entry>
355 </row>
798d3a52 356 <row>
5a15caf4 357 <entry><filename>/usr/lib/systemd/system</filename></entry>
b82f27e7
ZJS
358 </row>
359 <row>
360 <entry><filename>/run/systemd/generator.late</filename></entry>
361 <entry>Generated units with low priority (see <replaceable>late-dir</replaceable> in <citerefentry
362 ><refentrytitle>system.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry>
798d3a52
ZJS
363 </row>
364 </tbody>
365 </tgroup>
366 </table>
367
368 <table>
369 <title>
370 Load path when running in user mode (<option>--user</option>).
371 </title>
372
373 <tgroup cols='2'>
374 <colspec colname='path' />
375 <colspec colname='expl' />
376 <thead>
377 <row>
5a15caf4
ZJS
378 <entry>Path</entry>
379 <entry>Description</entry>
798d3a52
ZJS
380 </row>
381 </thead>
382 <tbody>
383 <row>
b82f27e7
ZJS
384 <entry><filename>$XDG_CONFIG_HOME/systemd/user.control</filename> or <filename
385 >~/.config/systemd/user.control</filename></entry>
386 <entry morerows="1">Persistent and transient configuration created using the dbus API (<varname>$XDG_CONFIG_HOME</varname> is used if set, <filename>~/.config</filename> otherwise)</entry>
387 </row>
388 <row>
389 <entry><filename>$XDG_RUNTIME_DIR/systemd/user.control</filename></entry>
390 </row>
391 <row>
392 <entry><filename>/run/systemd/transient</filename></entry>
393 <entry>Dynamic configuration for transient units</entry>
394 </row>
395 <row>
396 <entry><filename>/run/systemd/generator.early</filename></entry>
397 <entry>Generated units with high priority (see <replaceable>early-dir</replaceable> in <citerefentry
398 ><refentrytitle>system.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry>
798d3a52
ZJS
399 </row>
400 <row>
b82f27e7
ZJS
401 <entry><filename>$XDG_CONFIG_HOME/systemd/user</filename> or <filename>$HOME/.config/systemd/user</filename></entry>
402 <entry>User configuration (<varname>$XDG_CONFIG_HOME</varname> is used if set, <filename>~/.config</filename> otherwise)</entry>
798d3a52
ZJS
403 </row>
404 <row>
5a15caf4
ZJS
405 <entry><filename>/etc/systemd/user</filename></entry>
406 <entry>Local configuration</entry>
798d3a52
ZJS
407 </row>
408 <row>
5a15caf4
ZJS
409 <entry><filename>$XDG_RUNTIME_DIR/systemd/user</filename></entry>
410 <entry>Runtime units (only used when $XDG_RUNTIME_DIR is set)</entry>
798d3a52
ZJS
411 </row>
412 <row>
5a15caf4
ZJS
413 <entry><filename>/run/systemd/user</filename></entry>
414 <entry>Runtime units</entry>
798d3a52
ZJS
415 </row>
416 <row>
b82f27e7
ZJS
417 <entry><filename>$XDG_RUNTIME_DIR/systemd/generator</filename></entry>
418 <entry>Generated units with medium priority (see <replaceable>normal-dir</replaceable> in <citerefentry
419 ><refentrytitle>system.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry>
798d3a52
ZJS
420 </row>
421 <row>
b82f27e7
ZJS
422 <entry><filename>$XDG_DATA_HOME/systemd/user</filename> or <filename>$HOME/.local/share/systemd/user</filename></entry>
423 <entry>Units of packages that have been installed in the home directory (<varname>$XDG_DATA_HOME</varname> is used if set, <filename>~/.local/share</filename> otherwise)</entry>
424 </row>
425 <row>
426 <entry><filename>$dir/systemd/user</filename> for each <varname noindex='true'>$dir</varname> in <varname>$XDG_DATA_DIRS</varname></entry>
427 <entry>Additional locations for installed user units, one for each entry in <varname>$XDG_DATA_DIRS</varname></entry>
428 </row>
429 <row>
430 <entry><filename>/usr/local/lib/systemd/user</filename></entry>
431 <entry morerows="1">Units of packages that have been installed system-wide</entry>
798d3a52
ZJS
432 </row>
433 <row>
5a15caf4 434 <entry><filename>/usr/lib/systemd/user</filename></entry>
b82f27e7
ZJS
435 </row>
436 <row>
437 <entry><filename>$XDG_RUNTIME_DIR/systemd/generator.late</filename></entry>
438 <entry>Generated units with low priority (see <replaceable>late-dir</replaceable> in <citerefentry
439 ><refentrytitle>system.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry>
798d3a52
ZJS
440 </row>
441 </tbody>
442 </tgroup>
443 </table>
444
b82f27e7
ZJS
445 <para>The set of load paths for the user manager instance may be augmented or
446 changed using various environment variables. And environment variables may in
447 turn be set using environment generators, see
930362ab 448 <citerefentry><refentrytitle>systemd.environment-generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
b82f27e7
ZJS
449 In particular, <varname>$XDG_DATA_HOME</varname> and
450 <varname>$XDG_DATA_DIRS</varname> may be easily set using
451 <citerefentry><refentrytitle>systemd-environment-d-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
452 Thus, directories listed here are just the defaults. To see the actual list that
453 would be used based on compilation options and current environment use
454 <programlisting>systemd-analyze --user unit-paths</programlisting>
455 </para>
456
457 <para>Moreover, additional units might be loaded into systemd ("linked") from
458 directories not on the unit load path. See the <command>link</command> command
459 for
798d3a52 460 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
798d3a52
ZJS
461 </para>
462 </refsect1>
463
5afe510c
LP
464 <refsect1>
465 <title>Unit Garbage Collection</title>
466
467 <para>The system and service manager loads a unit's configuration automatically when a unit is referenced for the
468 first time. It will automatically unload the unit configuration and state again when the unit is not needed anymore
469 ("garbage collection"). A unit may be referenced through a number of different mechanisms:</para>
470
471 <orderedlist>
472 <listitem><para>Another loaded unit references it with a dependency such as <varname>After=</varname>,
473 <varname>Wants=</varname>, …</para></listitem>
474
475 <listitem><para>The unit is currently starting, running, reloading or stopping.</para></listitem>
476
477 <listitem><para>The unit is currently in the <constant>failed</constant> state. (But see below.)</para></listitem>
478
479 <listitem><para>A job for the unit is pending.</para></listitem>
480
481 <listitem><para>The unit is pinned by an active IPC client program.</para></listitem>
482
483 <listitem><para>The unit is a special "perpetual" unit that is always active and loaded. Examples for perpetual
484 units are the root mount unit <filename>-.mount</filename> or the scope unit <filename>init.scope</filename> that
485 the service manager itself lives in.</para></listitem>
486
487 <listitem><para>The unit has running processes associated with it.</para></listitem>
488 </orderedlist>
489
490 <para>The garbage collection logic may be altered with the <varname>CollectMode=</varname> option, which allows
491 configuration whether automatic unloading of units that are in <constant>failed</constant> state is permissible,
492 see below.</para>
493
494 <para>Note that when a unit's configuration and state is unloaded, all execution results, such as exit codes, exit
495 signals, resource consumption and other statistics are lost, except for what is stored in the log subsystem.</para>
496
497 <para>Use <command>systemctl daemon-reload</command> or an equivalent command to reload unit configuration while
498 the unit is already loaded. In this case all configuration settings are flushed out and replaced with the new
499 configuration (which however might not be in effect immediately), however all runtime state is
500 saved/restored.</para>
501 </refsect1>
502
798d3a52
ZJS
503 <refsect1>
504 <title>[Unit] Section Options</title>
505
a8eaaee7 506 <para>The unit file may include a [Unit] section, which carries
798d3a52
ZJS
507 generic information about the unit that is not dependent on the
508 type of unit:</para>
509
510 <variablelist class='unit-directives'>
511
512 <varlistentry>
513 <term><varname>Description=</varname></term>
514 <listitem><para>A free-form string describing the unit. This
515 is intended for use in UIs to show descriptive information
516 along with the unit name. The description should contain a
517 name that means something to the end user. <literal>Apache2
518 Web Server</literal> is a good example. Bad examples are
519 <literal>high-performance light-weight HTTP server</literal>
520 (too generic) or <literal>Apache2</literal> (too specific and
521 meaningless for people who do not know
522 Apache).</para></listitem>
523 </varlistentry>
524
525 <varlistentry>
526 <term><varname>Documentation=</varname></term>
527 <listitem><para>A space-separated list of URIs referencing
528 documentation for this unit or its configuration. Accepted are
529 only URIs of the types <literal>http://</literal>,
530 <literal>https://</literal>, <literal>file:</literal>,
531 <literal>info:</literal>, <literal>man:</literal>. For more
532 information about the syntax of these URIs, see <citerefentry
533 project='man-pages'><refentrytitle>uri</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
534 The URIs should be listed in order of relevance, starting with
535 the most relevant. It is a good idea to first reference
536 documentation that explains what the unit's purpose is,
537 followed by how it is configured, followed by any other
538 related documentation. This option may be specified more than
539 once, in which case the specified list of URIs is merged. If
540 the empty string is assigned to this option, the list is reset
541 and all prior assignments will have no
542 effect.</para></listitem>
543 </varlistentry>
544
545 <varlistentry>
546 <term><varname>Requires=</varname></term>
547
62d3ca24 548 <listitem><para>Configures requirement dependencies on other units. If this unit gets activated, the units
a195dd8e 549 listed here will be activated as well. If one of the other units fails to activate, and an ordering dependency
e79eabdb 550 <varname>After=</varname> on the failing unit is set, this unit will not be started. Besides, with or without
22a70563
ZJS
551 specifying <varname>After=</varname>, this unit will be stopped if one of the other units is explicitly
552 stopped. This option may be specified more than once or multiple space-separated units may be
62d3ca24
LP
553 specified in one option in which case requirement dependencies for all listed names will be created. Note that
554 requirement dependencies do not influence the order in which services are started or stopped. This has to be
555 configured independently with the <varname>After=</varname> or <varname>Before=</varname> options. If a unit
556 <filename>foo.service</filename> requires a unit <filename>bar.service</filename> as configured with
557 <varname>Requires=</varname> and no ordering is configured with <varname>After=</varname> or
558 <varname>Before=</varname>, then both units will be started simultaneously and without any delay between them
559 if <filename>foo.service</filename> is activated. Often, it is a better choice to use <varname>Wants=</varname>
560 instead of <varname>Requires=</varname> in order to achieve a system that is more robust when dealing with
561 failing services.</para>
562
563 <para>Note that this dependency type does not imply that the other unit always has to be in active state when
564 this unit is running. Specifically: failing condition checks (such as <varname>ConditionPathExists=</varname>,
6b5bb2f9 565 <varname>ConditionPathIsSymbolicLink=</varname>, … — see below) do not cause the start job of a unit with a
62d3ca24
LP
566 <varname>Requires=</varname> dependency on it to fail. Also, some unit types may deactivate on their own (for
567 example, a service process may decide to exit cleanly, or a device may be unplugged by the user), which is not
568 propagated to units having a <varname>Requires=</varname> dependency. Use the <varname>BindsTo=</varname>
569 dependency type together with <varname>After=</varname> to ensure that a unit may never be in active state
570 without a specific other unit also in active state (see below).</para>
571
572 <para>Note that dependencies of this type may also be configured outside of the unit configuration file by
573 adding a symlink to a <filename>.requires/</filename> directory accompanying the unit file. For details, see
798d3a52
ZJS
574 above.</para></listitem>
575 </varlistentry>
576
798d3a52
ZJS
577 <varlistentry>
578 <term><varname>Requisite=</varname></term>
798d3a52 579
706a3df4
ZJS
580 <listitem><para>Similar to <varname>Requires=</varname>. However, if the units listed here
581 are not started already, they will not be started and the starting of this unit will fail
582 immediately. <varname>Requisite=</varname> does not imply an ordering dependency, even if
583 both units are started in the same transaction. Hence this setting should usually be
584 combined with <varname>After=</varname>, to ensure this unit is not started before the other
585 unit.</para>
b2920668
ZJS
586
587 <para>When <varname>Requisite=b.service</varname> is used on
588 <filename>a.service</filename>, this dependency will show as
589 <varname>RequisiteOf=a.service</varname> in property listing of
590 <filename>b.service</filename>. <varname>RequisiteOf=</varname>
591 dependency cannot be specified directly.</para>
592 </listitem>
798d3a52
ZJS
593 </varlistentry>
594
595 <varlistentry>
596 <term><varname>Wants=</varname></term>
597
598 <listitem><para>A weaker version of
599 <varname>Requires=</varname>. Units listed in this option will
600 be started if the configuring unit is. However, if the listed
601 units fail to start or cannot be added to the transaction,
602 this has no impact on the validity of the transaction as a
603 whole. This is the recommended way to hook start-up of one
604 unit to the start-up of another unit.</para>
605
606 <para>Note that dependencies of this type may also be
607 configured outside of the unit configuration file by adding
608 symlinks to a <filename>.wants/</filename> directory
609 accompanying the unit file. For details, see
610 above.</para></listitem>
611 </varlistentry>
612
613 <varlistentry>
614 <term><varname>BindsTo=</varname></term>
615
62d3ca24
LP
616 <listitem><para>Configures requirement dependencies, very similar in style to
617 <varname>Requires=</varname>. However, this dependency type is stronger: in addition to the effect of
618 <varname>Requires=</varname> it declares that if the unit bound to is stopped, this unit will be stopped
619 too. This means a unit bound to another unit that suddenly enters inactive state will be stopped too.
620 Units can suddenly, unexpectedly enter inactive state for different reasons: the main process of a service unit
621 might terminate on its own choice, the backing device of a device unit might be unplugged or the mount point of
622 a mount unit might be unmounted without involvement of the system and service manager.</para>
623
624 <para>When used in conjunction with <varname>After=</varname> on the same unit the behaviour of
625 <varname>BindsTo=</varname> is even stronger. In this case, the unit bound to strictly has to be in active
626 state for this unit to also be in active state. This not only means a unit bound to another unit that suddenly
627 enters inactive state, but also one that is bound to another unit that gets skipped due to a failed condition
628 check (such as <varname>ConditionPathExists=</varname>, <varname>ConditionPathIsSymbolicLink=</varname>, … —
629 see below) will be stopped, should it be running. Hence, in many cases it is best to combine
b2920668
ZJS
630 <varname>BindsTo=</varname> with <varname>After=</varname>.</para>
631
632 <para>When <varname>BindsTo=b.service</varname> is used on
633 <filename>a.service</filename>, this dependency will show as
634 <varname>BoundBy=a.service</varname> in property listing of
635 <filename>b.service</filename>. <varname>BoundBy=</varname>
636 dependency cannot be specified directly.</para>
637 </listitem>
798d3a52
ZJS
638 </varlistentry>
639
640 <varlistentry>
641 <term><varname>PartOf=</varname></term>
642
643 <listitem><para>Configures dependencies similar to
644 <varname>Requires=</varname>, but limited to stopping and
645 restarting of units. When systemd stops or restarts the units
646 listed here, the action is propagated to this unit. Note that
647 this is a one-way dependency — changes to this unit do not
b2920668
ZJS
648 affect the listed units.</para>
649
650 <para>When <varname>PartOf=b.service</varname> is used on
651 <filename>a.service</filename>, this dependency will show as
652 <varname>ConsistsOf=a.service</varname> in property listing of
653 <filename>b.service</filename>. <varname>ConsistsOf=</varname>
654 dependency cannot be specified directly.</para>
655 </listitem>
798d3a52
ZJS
656 </varlistentry>
657
658 <varlistentry>
659 <term><varname>Conflicts=</varname></term>
660
661 <listitem><para>A space-separated list of unit names.
662 Configures negative requirement dependencies. If a unit has a
663 <varname>Conflicts=</varname> setting on another unit,
664 starting the former will stop the latter and vice versa. Note
665 that this setting is independent of and orthogonal to the
666 <varname>After=</varname> and <varname>Before=</varname>
667 ordering dependencies.</para>
668
669 <para>If a unit A that conflicts with a unit B is scheduled to
670 be started at the same time as B, the transaction will either
671 fail (in case both are required part of the transaction) or be
672 modified to be fixed (in case one or both jobs are not a
673 required part of the transaction). In the latter case, the job
674 that is not the required will be removed, or in case both are
675 not required, the unit that conflicts will be started and the
676 unit that is conflicted is stopped.</para></listitem>
677 </varlistentry>
678
679 <varlistentry>
680 <term><varname>Before=</varname></term>
681 <term><varname>After=</varname></term>
682
2eb6ff5e
LP
683 <listitem><para>These two settings expect a space-separated list of unit names. They configure ordering
684 dependencies between units. If a unit <filename>foo.service</filename> contains a setting
685 <option>Before=bar.service</option> and both units are being started, <filename>bar.service</filename>'s
686 start-up is delayed until <filename>foo.service</filename> has finished starting up. Note that this setting is
687 independent of and orthogonal to the requirement dependencies as configured by <varname>Requires=</varname>,
688 <varname>Wants=</varname> or <varname>BindsTo=</varname>. It is a common pattern to include a unit name in both
689 the <varname>After=</varname> and <varname>Requires=</varname> options, in which case the unit listed will be
690 started before the unit that is configured with these options. This option may be specified more than once, in
691 which case ordering dependencies for all listed names are created. <varname>After=</varname> is the inverse of
692 <varname>Before=</varname>, i.e. while <varname>After=</varname> ensures that the configured unit is started
693 after the listed unit finished starting up, <varname>Before=</varname> ensures the opposite, that the
694 configured unit is fully started up before the listed unit is started. Note that when two units with an
695 ordering dependency between them are shut down, the inverse of the start-up order is applied. i.e. if a unit is
696 configured with <varname>After=</varname> on another unit, the former is stopped before the latter if both are
697 shut down. Given two units with any ordering dependency between them, if one unit is shut down and the other is
698 started up, the shutdown is ordered before the start-up. It doesn't matter if the ordering dependency is
699 <varname>After=</varname> or <varname>Before=</varname>, in this case. It also doesn't matter which of the two
700 is shut down, as long as one is shut down and the other is started up. The shutdown is ordered before the
701 start-up in all cases. If two units have no ordering dependencies between them, they are shut down or started
702 up simultaneously, and no ordering takes place. It depends on the unit type when precisely a unit has finished
703 starting up. Most importantly, for service units start-up is considered completed for the purpose of
704 <varname>Before=</varname>/<varname>After=</varname> when all its configured start-up commands have been
705 invoked and they either failed or reported start-up success.</para></listitem>
798d3a52
ZJS
706 </varlistentry>
707
708 <varlistentry>
709 <term><varname>OnFailure=</varname></term>
710
711 <listitem><para>A space-separated list of one or more units
712 that are activated when this unit enters the
bd2538b5
KBM
713 <literal>failed</literal> state. A service unit using
714 <varname>Restart=</varname> enters the failed state only after
715 the start limits are reached.</para></listitem>
798d3a52
ZJS
716 </varlistentry>
717
718 <varlistentry>
719 <term><varname>PropagatesReloadTo=</varname></term>
720 <term><varname>ReloadPropagatedFrom=</varname></term>
721
722 <listitem><para>A space-separated list of one or more units
723 where reload requests on this unit will be propagated to, or
724 reload requests on the other unit will be propagated to this
725 unit, respectively. Issuing a reload request on a unit will
726 automatically also enqueue a reload request on all units that
727 the reload request shall be propagated to via these two
728 settings.</para></listitem>
729 </varlistentry>
730
731 <varlistentry>
732 <term><varname>JoinsNamespaceOf=</varname></term>
733
734 <listitem><para>For units that start processes (such as
735 service units), lists one or more other units whose network
736 and/or temporary file namespace to join. This only applies to
737 unit types which support the
738 <varname>PrivateNetwork=</varname> and
739 <varname>PrivateTmp=</varname> directives (see
740 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
741 for details). If a unit that has this setting set is started,
742 its processes will see the same <filename>/tmp</filename>,
80f524a4 743 <filename>/var/tmp</filename> and network namespace as one
798d3a52
ZJS
744 listed unit that is started. If multiple listed units are
745 already started, it is not defined which namespace is joined.
746 Note that this setting only has an effect if
747 <varname>PrivateNetwork=</varname> and/or
748 <varname>PrivateTmp=</varname> is enabled for both the unit
749 that joins the namespace and the unit whose namespace is
750 joined.</para></listitem>
751 </varlistentry>
752
753 <varlistentry>
754 <term><varname>RequiresMountsFor=</varname></term>
755
756 <listitem><para>Takes a space-separated list of absolute
757 paths. Automatically adds dependencies of type
758 <varname>Requires=</varname> and <varname>After=</varname> for
759 all mount units required to access the specified path.</para>
760
761 <para>Mount points marked with <option>noauto</option> are not
88e328fd
ZJS
762 mounted automatically through <filename>local-fs.target</filename>,
763 but are still honored for the purposes of this option, i.e. they
764 will be pulled in by this unit.</para></listitem>
798d3a52
ZJS
765 </varlistentry>
766
767 <varlistentry>
768 <term><varname>OnFailureJobMode=</varname></term>
769
770 <listitem><para>Takes a value of
771 <literal>fail</literal>,
772 <literal>replace</literal>,
773 <literal>replace-irreversibly</literal>,
774 <literal>isolate</literal>,
775 <literal>flush</literal>,
776 <literal>ignore-dependencies</literal> or
777 <literal>ignore-requirements</literal>. Defaults to
778 <literal>replace</literal>. Specifies how the units listed in
779 <varname>OnFailure=</varname> will be enqueued. See
780 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s
781 <option>--job-mode=</option> option for details on the
782 possible values. If this is set to <literal>isolate</literal>,
783 only a single unit may be listed in
784 <varname>OnFailure=</varname>..</para></listitem>
785 </varlistentry>
786
787 <varlistentry>
788 <term><varname>IgnoreOnIsolate=</varname></term>
789
26adf774
ZJS
790 <listitem><para>Takes a boolean argument. If <option>true</option>, this unit
791 will not be stopped when isolating another unit. Defaults to
792 <option>false</option> for service, target, socket, busname, timer, and path
793 units, and <option>true</option> for slice, scope, device, swap, mount, and
794 automount units.</para></listitem>
798d3a52
ZJS
795 </varlistentry>
796
798d3a52
ZJS
797 <varlistentry>
798 <term><varname>StopWhenUnneeded=</varname></term>
799
800 <listitem><para>Takes a boolean argument. If
801 <option>true</option>, this unit will be stopped when it is no
b938cb90 802 longer used. Note that, in order to minimize the work to be
798d3a52
ZJS
803 executed, systemd will not stop units by default unless they
804 are conflicting with other units, or the user explicitly
805 requested their shut down. If this option is set, a unit will
806 be automatically cleaned up if no other active unit requires
807 it. Defaults to <option>false</option>.</para></listitem>
808 </varlistentry>
809
810 <varlistentry>
811 <term><varname>RefuseManualStart=</varname></term>
812 <term><varname>RefuseManualStop=</varname></term>
813
814 <listitem><para>Takes a boolean argument. If
815 <option>true</option>, this unit can only be activated or
816 deactivated indirectly. In this case, explicit start-up or
817 termination requested by the user is denied, however if it is
818 started or stopped as a dependency of another unit, start-up
819 or termination will succeed. This is mostly a safety feature
820 to ensure that the user does not accidentally activate units
821 that are not intended to be activated explicitly, and not
822 accidentally deactivate units that are not intended to be
823 deactivated. These options default to
824 <option>false</option>.</para></listitem>
825 </varlistentry>
826
827 <varlistentry>
828 <term><varname>AllowIsolate=</varname></term>
829
830 <listitem><para>Takes a boolean argument. If
831 <option>true</option>, this unit may be used with the
832 <command>systemctl isolate</command> command. Otherwise, this
833 will be refused. It probably is a good idea to leave this
834 disabled except for target units that shall be used similar to
835 runlevels in SysV init systems, just as a precaution to avoid
836 unusable system states. This option defaults to
837 <option>false</option>.</para></listitem>
838 </varlistentry>
839
840 <varlistentry>
841 <term><varname>DefaultDependencies=</varname></term>
842
843 <listitem><para>Takes a boolean argument. If
844 <option>true</option>, (the default), a few default
845 dependencies will implicitly be created for the unit. The
846 actual dependencies created depend on the unit type. For
847 example, for service units, these dependencies ensure that the
848 service is started only after basic system initialization is
849 completed and is properly terminated on system shutdown. See
850 the respective man pages for details. Generally, only services
851 involved with early boot or late shutdown should set this
852 option to <option>false</option>. It is highly recommended to
853 leave this option enabled for the majority of common units. If
854 set to <option>false</option>, this option does not disable
855 all implicit dependencies, just non-essential
856 ones.</para></listitem>
857 </varlistentry>
858
5afe510c
LP
859 <varlistentry>
860 <term><varname>CollectMode=</varname></term>
861
862 <listitem><para>Tweaks the "garbage collection" algorithm for this unit. Takes one of <option>inactive</option>
863 or <option>inactive-or-failed</option>. If set to <option>inactive</option> the unit will be unloaded if it is
864 in the <constant>inactive</constant> state and is not referenced by clients, jobs or other units — however it
865 is not unloaded if it is in the <constant>failed</constant> state. In <option>failed</option> mode, failed
866 units are not unloaded until the user invoked <command>systemctl reset-failed</command> on them to reset the
867 <constant>failed</constant> state, or an equivalent command. This behaviour is altered if this option is set to
868 <option>inactive-or-failed</option>: in this case the unit is unloaded even if the unit is in a
869 <constant>failed</constant> state, and thus an explicitly resetting of the <constant>failed</constant> state is
870 not necessary. Note that if this mode is used unit results (such as exit codes, exit signals, consumed
871 resources, …) are flushed out immediately after the unit completed, except for what is stored in the logging
872 subsystem. Defaults to <option>inactive</option>.</para>
873 </listitem>
874 </varlistentry>
875
798d3a52
ZJS
876 <varlistentry>
877 <term><varname>JobTimeoutSec=</varname></term>
a2df3ea4 878 <term><varname>JobRunningTimeoutSec=</varname></term>
798d3a52
ZJS
879 <term><varname>JobTimeoutAction=</varname></term>
880 <term><varname>JobTimeoutRebootArgument=</varname></term>
881
a2df3ea4
MK
882 <listitem><para>When a job for this unit is queued, a time-out <varname>JobTimeoutSec=</varname> may be
883 configured. Similarly, <varname>JobRunningTimeoutSec=</varname> starts counting when the queued job is actually
884 started. If either time limit is reached, the job will be cancelled, the unit however will not change state or
885 even enter the <literal>failed</literal> mode. This value defaults to <literal>infinity</literal> (job timeouts
886 disabled), except for device units (<varname>JobRunningTimeoutSec=</varname> defaults to
887 <varname>DefaultTimeoutStartSec=</varname>). NB: this timeout is independent from any unit-specific timeout
888 (for example, the timeout set with <varname>TimeoutStartSec=</varname> in service units) as the job timeout has
889 no effect on the unit itself, only on the job that might be pending for it. Or in other words: unit-specific
890 timeouts are useful to abort unit state changes, and revert them. The job timeout set with this option however
891 is useful to abort only the job waiting for the unit state to change.</para>
798d3a52 892
0aabe747
AJ
893 <para><varname>JobTimeoutAction=</varname> optionally configures an additional action to take when the time-out
894 is hit. It takes the same values as <varname>StartLimitAction=</varname>. Defaults to <option>none</option>.
895 <varname>JobTimeoutRebootArgument=</varname> configures an optional reboot string to pass to the
798d3a52
ZJS
896 <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
897 system call.</para></listitem>
898 </varlistentry>
899
6bf0f408 900 <varlistentry>
fc5ffacd
ZJS
901 <term><varname>StartLimitIntervalSec=<replaceable>interval</replaceable></varname></term>
902 <term><varname>StartLimitBurst=<replaceable>burst</replaceable></varname></term>
6bf0f408 903
fc5ffacd 904 <listitem><para>Configure unit start rate limiting. Units which are started more than
b94f4313
LP
905 <replaceable>burst</replaceable> times within an <replaceable>interval</replaceable> time interval are not
906 permitted to start any more. Use <varname>StartLimitIntervalSec=</varname> to configure the checking interval
907 (defaults to <varname>DefaultStartLimitIntervalSec=</varname> in manager configuration file, set it to 0 to
908 disable any kind of rate limiting). Use <varname>StartLimitBurst=</varname> to configure how many starts per
909 interval are allowed (defaults to <varname>DefaultStartLimitBurst=</varname> in manager configuration
910 file). These configuration options are particularly useful in conjunction with the service setting
911 <varname>Restart=</varname> (see
6bf0f408
LP
912 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>); however,
913 they apply to all kinds of starts (including manual), not just those triggered by the
914 <varname>Restart=</varname> logic. Note that units which are configured for <varname>Restart=</varname> and
915 which reach the start limit are not attempted to be restarted anymore; however, they may still be restarted
b94f4313
LP
916 manually at a later point, after the <replaceable>interval</replaceable> has passed. From this point on, the
917 restart logic is activated again. Note that <command>systemctl reset-failed</command> will cause the restart
918 rate counter for a service to be flushed, which is useful if the administrator wants to manually start a unit
919 and the start limit interferes with that. Note that this rate-limiting is enforced after any unit condition
920 checks are executed, and hence unit activations with failing conditions do not count towards this rate
921 limit. This setting does not apply to slice, target, device, and scope units, since they are unit types whose
922 activation may either never fail, or may succeed only a single time.</para>
923
924 <para>When a unit is unloaded due to the garbage collection logic (see above) its rate limit counters are
1b2ad5d9 925 flushed out too. This means that configuring start rate limiting for a unit that is not referenced continuously
b94f4313 926 has no effect.</para></listitem>
6bf0f408
LP
927 </varlistentry>
928
929 <varlistentry>
930 <term><varname>StartLimitAction=</varname></term>
931
932 <listitem><para>Configure the action to take if the rate limit configured with
f0367da7 933 <varname>StartLimitIntervalSec=</varname> and <varname>StartLimitBurst=</varname> is hit. Takes one of
6bf0f408
LP
934 <option>none</option>, <option>reboot</option>, <option>reboot-force</option>,
935 <option>reboot-immediate</option>, <option>poweroff</option>, <option>poweroff-force</option> or
936 <option>poweroff-immediate</option>. If <option>none</option> is set, hitting the rate limit will trigger no
937 action besides that the start will not be permitted. <option>reboot</option> causes a reboot following the
938 normal shutdown procedure (i.e. equivalent to <command>systemctl reboot</command>).
939 <option>reboot-force</option> causes a forced reboot which will terminate all processes forcibly but should
940 cause no dirty file systems on reboot (i.e. equivalent to <command>systemctl reboot -f</command>) and
941 <option>reboot-immediate</option> causes immediate execution of the
942 <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> system call, which
943 might result in data loss. Similarly, <option>poweroff</option>, <option>poweroff-force</option>,
944 <option>poweroff-immediate</option> have the effect of powering down the system with similar
945 semantics. Defaults to <option>none</option>.</para></listitem>
946 </varlistentry>
947
53c35a76
LP
948 <varlistentry>
949 <term><varname>FailureAction=</varname></term>
e7dfbb4e
LP
950 <term><varname>SuccessAction=</varname></term>
951 <listitem><para>Configure the action to take when the unit stops and enters a failed state or inactive
952 state. Takes the same values as the setting <varname>StartLimitAction=</varname> setting and executes the same
f7a4bd95 953 actions. Both options default to <option>none</option>.</para></listitem>
53c35a76
LP
954 </varlistentry>
955
6bf0f408
LP
956 <varlistentry>
957 <term><varname>RebootArgument=</varname></term>
958 <listitem><para>Configure the optional argument for the
959 <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> system call if
53c35a76 960 <varname>StartLimitAction=</varname> or <varname>FailureAction=</varname> is a reboot action. This
6bf0f408
LP
961 works just like the optional argument to <command>systemctl reboot</command> command.</para></listitem>
962 </varlistentry>
963
798d3a52
ZJS
964 <varlistentry>
965 <term><varname>ConditionArchitecture=</varname></term>
966 <term><varname>ConditionVirtualization=</varname></term>
967 <term><varname>ConditionHost=</varname></term>
968 <term><varname>ConditionKernelCommandLine=</varname></term>
5022f08a 969 <term><varname>ConditionKernelVersion=</varname></term>
798d3a52
ZJS
970 <term><varname>ConditionSecurity=</varname></term>
971 <term><varname>ConditionCapability=</varname></term>
972 <term><varname>ConditionACPower=</varname></term>
973 <term><varname>ConditionNeedsUpdate=</varname></term>
974 <term><varname>ConditionFirstBoot=</varname></term>
975 <term><varname>ConditionPathExists=</varname></term>
976 <term><varname>ConditionPathExistsGlob=</varname></term>
977 <term><varname>ConditionPathIsDirectory=</varname></term>
978 <term><varname>ConditionPathIsSymbolicLink=</varname></term>
979 <term><varname>ConditionPathIsMountPoint=</varname></term>
980 <term><varname>ConditionPathIsReadWrite=</varname></term>
981 <term><varname>ConditionDirectoryNotEmpty=</varname></term>
982 <term><varname>ConditionFileNotEmpty=</varname></term>
983 <term><varname>ConditionFileIsExecutable=</varname></term>
c465a29f
FS
984 <term><varname>ConditionUser=</varname></term>
985 <term><varname>ConditionGroup=</varname></term>
e16647c3 986 <term><varname>ConditionControlGroupController=</varname></term>
798d3a52 987
7ca41557 988 <!-- We do not document ConditionNull=
b938cb90 989 here, as it is not particularly
798d3a52
ZJS
990 useful and probably just
991 confusing. -->
992
41448597
LP
993 <listitem><para>Before starting a unit, verify that the specified condition is true. If it is not true, the
994 starting of the unit will be (mostly silently) skipped, however all ordering dependencies of it are still
995 respected. A failing condition will not result in the unit being moved into a failure state. The condition is
996 checked at the time the queued start job is to be executed. Use condition expressions in order to silently skip
997 units that do not apply to the local running system, for example because the kernel or runtime environment
998 doesn't require its functionality. Use the various <varname>AssertArchitecture=</varname>,
999 <varname>AssertVirtualization=</varname>, … options for a similar mechanism that puts the unit in a failure
1000 state and logs about the failed check (see below).</para>
798d3a52
ZJS
1001
1002 <para><varname>ConditionArchitecture=</varname> may be used to
1003 check whether the system is running on a specific
1004 architecture. Takes one of
1005 <varname>x86</varname>,
1006 <varname>x86-64</varname>,
1007 <varname>ppc</varname>,
1008 <varname>ppc-le</varname>,
1009 <varname>ppc64</varname>,
1010 <varname>ppc64-le</varname>,
1011 <varname>ia64</varname>,
1012 <varname>parisc</varname>,
1013 <varname>parisc64</varname>,
1014 <varname>s390</varname>,
1015 <varname>s390x</varname>,
1016 <varname>sparc</varname>,
1017 <varname>sparc64</varname>,
1018 <varname>mips</varname>,
1019 <varname>mips-le</varname>,
1020 <varname>mips64</varname>,
1021 <varname>mips64-le</varname>,
1022 <varname>alpha</varname>,
1023 <varname>arm</varname>,
1024 <varname>arm-be</varname>,
1025 <varname>arm64</varname>,
1026 <varname>arm64-be</varname>,
1027 <varname>sh</varname>,
1028 <varname>sh64</varname>,
215a2db4 1029 <varname>m68k</varname>,
798d3a52 1030 <varname>tilegx</varname>,
27b09f1f
AB
1031 <varname>cris</varname>,
1032 <varname>arc</varname>,
1033 <varname>arc-be</varname> to test
798d3a52
ZJS
1034 against a specific architecture. The architecture is
1035 determined from the information returned by
3ba3a79d 1036 <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
798d3a52
ZJS
1037 and is thus subject to
1038 <citerefentry><refentrytitle>personality</refentrytitle><manvolnum>2</manvolnum></citerefentry>.
1039 Note that a <varname>Personality=</varname> setting in the
1040 same unit file has no effect on this condition. A special
1041 architecture name <varname>native</varname> is mapped to the
1042 architecture the system manager itself is compiled for. The
1043 test may be negated by prepending an exclamation mark.</para>
1044
1045 <para><varname>ConditionVirtualization=</varname> may be used
1046 to check whether the system is executed in a virtualized
1047 environment and optionally test whether it is a specific
1048 implementation. Takes either boolean value to check if being
1049 executed in any virtualized environment, or one of
1050 <varname>vm</varname> and
1051 <varname>container</varname> to test against a generic type of
1052 virtualization solution, or one of
1053 <varname>qemu</varname>,
1054 <varname>kvm</varname>,
1055 <varname>zvm</varname>,
1056 <varname>vmware</varname>,
1057 <varname>microsoft</varname>,
1058 <varname>oracle</varname>,
1059 <varname>xen</varname>,
1060 <varname>bochs</varname>,
1061 <varname>uml</varname>,
9bfaf6ea 1062 <varname>bhyve</varname>,
1fdf07f5 1063 <varname>qnx</varname>,
798d3a52
ZJS
1064 <varname>openvz</varname>,
1065 <varname>lxc</varname>,
1066 <varname>lxc-libvirt</varname>,
1067 <varname>systemd-nspawn</varname>,
9fb16425
ILG
1068 <varname>docker</varname>,
1069 <varname>rkt</varname> to test
299a34c1
ZJS
1070 against a specific implementation, or
1071 <varname>private-users</varname> to check whether we are running in a user namespace. See
798d3a52
ZJS
1072 <citerefentry><refentrytitle>systemd-detect-virt</refentrytitle><manvolnum>1</manvolnum></citerefentry>
1073 for a full list of known virtualization technologies and their
1074 identifiers. If multiple virtualization technologies are
1075 nested, only the innermost is considered. The test may be
1076 negated by prepending an exclamation mark.</para>
1077
1078 <para><varname>ConditionHost=</varname> may be used to match
1079 against the hostname or machine ID of the host. This either
1080 takes a hostname string (optionally with shell style globs)
1081 which is tested against the locally set hostname as returned
1082 by
1083 <citerefentry><refentrytitle>gethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
1084 or a machine ID formatted as string (see
1085 <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
1086 The test may be negated by prepending an exclamation
1087 mark.</para>
1088
1089 <para><varname>ConditionKernelCommandLine=</varname> may be
1090 used to check whether a specific kernel command line option is
1091 set (or if prefixed with the exclamation mark unset). The
1092 argument must either be a single word, or an assignment (i.e.
1093 two words, separated <literal>=</literal>). In the former case
1094 the kernel command line is searched for the word appearing as
1095 is, or as left hand side of an assignment. In the latter case,
1096 the exact assignment is looked for with right and left hand
1097 side matching.</para>
1098
5022f08a
LP
1099 <para><varname>ConditionKernelVersion=</varname> may be used to check whether the kernel version (as reported
1100 by <command>uname -r</command>) matches a certain expression (or if prefixed with the exclamation mark does not
68c58c67
LP
1101 match it). The argument must be a single string. If the string starts with one of <literal>&lt;</literal>,
1102 <literal>&lt;=</literal>, <literal>=</literal>, <literal>&gt;=</literal>, <literal>&gt;</literal> a relative
1103 version comparison is done, otherwise the specified string is matched with shell-style globs.</para>
5022f08a 1104
871c6d54
ZJS
1105 <para>Note that using the kernel version string is an unreliable way to determine which features are supported
1106 by a kernel, because of the widespread practice of backporting drivers, features, and fixes from newer upstream
1107 kernels into older versions provided by distributions. Hence, this check is inherently unportable and should
1108 not be used for units which may be used on different distributions.</para>
1109
798d3a52
ZJS
1110 <para><varname>ConditionSecurity=</varname> may be used to
1111 check whether the given security module is enabled on the
b8e1d4d1 1112 system. Currently, the recognized values are
798d3a52
ZJS
1113 <varname>selinux</varname>,
1114 <varname>apparmor</varname>,
ed440f6b 1115 <varname>tomoyo</varname>,
798d3a52
ZJS
1116 <varname>ima</varname>,
1117 <varname>smack</varname> and
1118 <varname>audit</varname>. The test may be negated by
1119 prepending an exclamation mark.</para>
1120
1121 <para><varname>ConditionCapability=</varname> may be used to
1122 check whether the given capability exists in the capability
1123 bounding set of the service manager (i.e. this does not check
1124 whether capability is actually available in the permitted or
1125 effective sets, see
1126 <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>
1127 for details). Pass a capability name such as
1128 <literal>CAP_MKNOD</literal>, possibly prefixed with an
1129 exclamation mark to negate the check.</para>
1130
1131 <para><varname>ConditionACPower=</varname> may be used to
1132 check whether the system has AC power, or is exclusively
1133 battery powered at the time of activation of the unit. This
1134 takes a boolean argument. If set to <varname>true</varname>,
1135 the condition will hold only if at least one AC connector of
1136 the system is connected to a power source, or if no AC
1137 connectors are known. Conversely, if set to
1138 <varname>false</varname>, the condition will hold only if
1139 there is at least one AC connector known and all AC connectors
1140 are disconnected from a power source.</para>
1141
1142 <para><varname>ConditionNeedsUpdate=</varname> takes one of
1143 <filename>/var</filename> or <filename>/etc</filename> as
1144 argument, possibly prefixed with a <literal>!</literal> (for
1145 inverting the condition). This condition may be used to
1146 conditionalize units on whether the specified directory
1147 requires an update because <filename>/usr</filename>'s
1148 modification time is newer than the stamp file
1149 <filename>.updated</filename> in the specified directory. This
1150 is useful to implement offline updates of the vendor operating
1151 system resources in <filename>/usr</filename> that require
1152 updating of <filename>/etc</filename> or
1153 <filename>/var</filename> on the next following boot. Units
1154 making use of this condition should order themselves before
1155 <citerefentry><refentrytitle>systemd-update-done.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
7f3fdb7f 1156 to make sure they run before the stamp file's modification
798d3a52
ZJS
1157 time gets reset indicating a completed update.</para>
1158
23254af1
LP
1159 <para><varname>ConditionFirstBoot=</varname> takes a boolean argument. This condition may be used to
1160 conditionalize units on whether the system is booting up with an unpopulated <filename>/etc</filename>
1161 directory (specifically: an <filename>/etc</filename> with no <filename>/etc/machine-id</filename>). This may
1162 be used to populate <filename>/etc</filename> on the first boot after factory reset, or when a new system
1163 instance boots up for the first time.</para>
798d3a52
ZJS
1164
1165 <para>With <varname>ConditionPathExists=</varname> a file
1166 existence condition is checked before a unit is started. If
1167 the specified absolute path name does not exist, the condition
1168 will fail. If the absolute path name passed to
1169 <varname>ConditionPathExists=</varname> is prefixed with an
1170 exclamation mark (<literal>!</literal>), the test is negated,
1171 and the unit is only started if the path does not
1172 exist.</para>
1173
1174 <para><varname>ConditionPathExistsGlob=</varname> is similar
1175 to <varname>ConditionPathExists=</varname>, but checks for the
1176 existence of at least one file or directory matching the
1177 specified globbing pattern.</para>
1178
1179 <para><varname>ConditionPathIsDirectory=</varname> is similar
1180 to <varname>ConditionPathExists=</varname> but verifies
1181 whether a certain path exists and is a directory.</para>
1182
1183 <para><varname>ConditionPathIsSymbolicLink=</varname> is
1184 similar to <varname>ConditionPathExists=</varname> but
1185 verifies whether a certain path exists and is a symbolic
1186 link.</para>
1187
1188 <para><varname>ConditionPathIsMountPoint=</varname> is similar
1189 to <varname>ConditionPathExists=</varname> but verifies
1190 whether a certain path exists and is a mount point.</para>
1191
1192 <para><varname>ConditionPathIsReadWrite=</varname> is similar
1193 to <varname>ConditionPathExists=</varname> but verifies
1194 whether the underlying file system is readable and writable
1195 (i.e. not mounted read-only).</para>
1196
1197 <para><varname>ConditionDirectoryNotEmpty=</varname> is
1198 similar to <varname>ConditionPathExists=</varname> but
1199 verifies whether a certain path exists and is a non-empty
1200 directory.</para>
1201
1202 <para><varname>ConditionFileNotEmpty=</varname> is similar to
1203 <varname>ConditionPathExists=</varname> but verifies whether a
1204 certain path exists and refers to a regular file with a
1205 non-zero size.</para>
1206
1207 <para><varname>ConditionFileIsExecutable=</varname> is similar
1208 to <varname>ConditionPathExists=</varname> but verifies
1209 whether a certain path exists, is a regular file and marked
1210 executable.</para>
1211
c465a29f 1212 <para><varname>ConditionUser=</varname> takes a numeric
534bab66
FS
1213 <literal>UID</literal>, a UNIX user name, or the special value
1214 <literal>@system</literal>. This condition may be used to check
1215 whether the service manager is running as the given user. The
1216 special value <literal>@system</literal> can be used to check
1217 if the user id is within the system user range. This option is not
c465a29f
FS
1218 useful for system services, as the system manager exclusively
1219 runs as the root user, and thus the test result is constant.</para>
1220
1221 <para><varname>ConditionGroup=</varname> is similar
1222 to <varname>ConditionUser=</varname> but verifies that the
1223 service manager's real or effective group, or any of its
534bab66
FS
1224 auxiliary groups match the specified group or GID. This setting
1225 does not have a special value <literal>@system</literal>.</para>
c465a29f 1226
e16647c3
CD
1227 <para><varname>ConditionControlGroupController=</varname> takes a
1228 cgroup controller name (eg. <option>cpu</option>), verifying that it is
1229 available for use on the system. For example, a particular controller
1230 may not be available if it was disabled on the kernel command line with
1231 <literal>cgroup_disable=</literal><replaceable>controller</replaceable>.
1232 Multiple controllers may be passed with a space separating them; in
1233 this case the condition will only pass if all listed controllers are
1234 available for use. Controllers unknown to systemd are ignored. Valid
1235 controllers are <option>cpu</option>, <option>cpuacct</option>,
1236 <option>io</option>, <option>blkio</option>, <option>memory</option>,
1237 <option>devices</option>, and <option>pids</option>.</para>
1238
798d3a52
ZJS
1239 <para>If multiple conditions are specified, the unit will be
1240 executed if all of them apply (i.e. a logical AND is applied).
1241 Condition checks can be prefixed with a pipe symbol (|) in
1242 which case a condition becomes a triggering condition. If at
1243 least one triggering condition is defined for a unit, then the
1244 unit will be executed if at least one of the triggering
1245 conditions apply and all of the non-triggering conditions. If
1246 you prefix an argument with the pipe symbol and an exclamation
1247 mark, the pipe symbol must be passed first, the exclamation
1248 second. Except for
1249 <varname>ConditionPathIsSymbolicLink=</varname>, all path
1250 checks follow symlinks. If any of these options is assigned
1251 the empty string, the list of conditions is reset completely,
1252 all previous condition settings (of any kind) will have no
1253 effect.</para></listitem>
1254 </varlistentry>
1255
1256 <varlistentry>
1257 <term><varname>AssertArchitecture=</varname></term>
1258 <term><varname>AssertVirtualization=</varname></term>
1259 <term><varname>AssertHost=</varname></term>
1260 <term><varname>AssertKernelCommandLine=</varname></term>
5022f08a 1261 <term><varname>AssertKernelVersion=</varname></term>
798d3a52
ZJS
1262 <term><varname>AssertSecurity=</varname></term>
1263 <term><varname>AssertCapability=</varname></term>
1264 <term><varname>AssertACPower=</varname></term>
1265 <term><varname>AssertNeedsUpdate=</varname></term>
1266 <term><varname>AssertFirstBoot=</varname></term>
1267 <term><varname>AssertPathExists=</varname></term>
1268 <term><varname>AssertPathExistsGlob=</varname></term>
1269 <term><varname>AssertPathIsDirectory=</varname></term>
1270 <term><varname>AssertPathIsSymbolicLink=</varname></term>
1271 <term><varname>AssertPathIsMountPoint=</varname></term>
1272 <term><varname>AssertPathIsReadWrite=</varname></term>
1273 <term><varname>AssertDirectoryNotEmpty=</varname></term>
1274 <term><varname>AssertFileNotEmpty=</varname></term>
1275 <term><varname>AssertFileIsExecutable=</varname></term>
c465a29f
FS
1276 <term><varname>AssertUser=</varname></term>
1277 <term><varname>AssertGroup=</varname></term>
e16647c3 1278 <term><varname>AssertControlGroupController=</varname></term>
798d3a52 1279
41448597
LP
1280 <listitem><para>Similar to the <varname>ConditionArchitecture=</varname>,
1281 <varname>ConditionVirtualization=</varname>, …, condition settings described above, these settings add
1282 assertion checks to the start-up of the unit. However, unlike the conditions settings, any assertion setting
da25e029
ZJS
1283 that is not met results in failure of the start job (which means this is logged loudly). Use assertion
1284 expressions for units that cannot operate when specific requirements are not met, and when this is something
1285 the administrator or user should look into.</para></listitem>
798d3a52
ZJS
1286 </varlistentry>
1287
1288 <varlistentry>
1289 <term><varname>SourcePath=</varname></term>
1290 <listitem><para>A path to a configuration file this unit has
1291 been generated from. This is primarily useful for
1292 implementation of generator tools that convert configuration
1293 from an external configuration file format into native unit
1294 files. This functionality should not be used in normal
1295 units.</para></listitem>
1296 </varlistentry>
1297 </variablelist>
2bf92506
ZJS
1298 </refsect1>
1299
1300 <refsect1>
1301 <title>Mapping of unit properties to their inverses</title>
1302
1303 <para>Unit settings that create a relationship with a second unit usually show up
1304 in properties of both units, for example in <command>systemctl show</command>
1305 output. In some cases the name of the property is the same as the name of the
2116134b 1306 configuration setting, but not always. This table lists the properties
2bf92506
ZJS
1307 that are shown on two units which are connected through some dependency, and shows
1308 which property on "source" unit corresponds to which property on the "target" unit.
1309 </para>
1310
1311 <table>
1312 <title>
1313 "Forward" and "reverse" unit properties
1314 </title>
1315
1316 <tgroup cols='2'>
1317 <colspec colname='forward' />
1318 <colspec colname='reverse' />
1319 <colspec colname='notes' />
1320 <thead>
1321 <row>
1322 <entry>"Forward" property</entry>
1323 <entry>"Reverse" property</entry>
1324 <entry>Where used</entry>
1325 </row>
1326 </thead>
1327 <tbody>
1328 <row>
1329 <entry><varname>Before=</varname></entry>
1330 <entry><varname>After=</varname></entry>
1331 <entry morerows='1' valign='middle'>Both are unit file options</entry>
1332 </row>
1333 <row>
1334 <entry><varname>After=</varname></entry>
1335 <entry><varname>Before=</varname></entry>
1336 </row>
1337 <row>
1338 <entry><varname>Requires=</varname></entry>
1339 <entry><varname>RequiredBy=</varname></entry>
1340 <entry>A unit file option; an option in the [Install] section</entry>
1341 </row>
1342 <row>
1343 <entry><varname>Wants=</varname></entry>
1344 <entry><varname>WantedBy=</varname></entry>
1345 <entry>A unit file option; an option in the [Install] section</entry>
1346 </row>
1347 <row>
1348 <entry><varname>PartOf=</varname></entry>
1349 <entry><varname>ConsistsOf=</varname></entry>
1350 <entry>A unit file option; an automatic property</entry>
1351 </row>
1352 <row>
1353 <entry><varname>BindsTo=</varname></entry>
1354 <entry><varname>BoundBy=</varname></entry>
1355 <entry>A unit file option; an automatic property</entry>
1356 </row>
1357 <row>
1358 <entry><varname>Requisite=</varname></entry>
1359 <entry><varname>RequisiteOf=</varname></entry>
1360 <entry>A unit file option; an automatic property</entry>
1361 </row>
1362 <row>
1363 <entry><varname>Triggers=</varname></entry>
1364 <entry><varname>TriggeredBy=</varname></entry>
1365 <entry>Automatic properties, see notes below</entry>
1366 </row>
1367 <row>
1368 <entry><varname>Conflicts=</varname></entry>
1369 <entry><varname>ConflictedBy=</varname></entry>
1370 <entry>A unit file option; an automatic property</entry>
1371 </row>
1372 <row>
1373 <entry><varname>PropagatesReloadTo=</varname></entry>
1374 <entry><varname>ReloadPropagatedFrom=</varname></entry>
1375 <entry morerows='1' valign='middle'>Both are unit file options</entry>
1376 </row>
1377 <row>
1378 <entry><varname>ReloadPropagatedFrom=</varname></entry>
1379 <entry><varname>PropagatesReloadTo=</varname></entry>
1380 </row>
2116134b
ZJS
1381 <row>
1382 <entry><varname>Following=</varname></entry>
1383 <entry>n/a</entry>
1384 <entry>An automatic property</entry>
1385 </row>
2bf92506
ZJS
1386 </tbody>
1387 </tgroup>
1388 </table>
798d3a52 1389
2bf92506
ZJS
1390 <para>Note: <varname>WantedBy=</varname> and <varname>RequiredBy=</varname> are
1391 used in the [Install] section to create symlinks in <filename>.wants/</filename>
1392 and <filename>.requires/</filename> directories. They cannot be used directly as a
1393 unit configuration setting.</para>
1394
1395 <para>Note: <varname>ConsistsOf=</varname>, <varname>BoundBy=</varname>,
1396 <varname>RequisiteOf=</varname>, <varname>ConflictedBy=</varname> are created
1397 implicitly along with their reverse and cannot be specified directly.</para>
1398
1399 <para>Note: <varname>Triggers=</varname> is created implicitly between a socket,
1400 path unit, or an automount unit, and the unit they activate. By default a unit
1b2ad5d9 1401 with the same name is triggered, but this can be overridden using
2bf92506
ZJS
1402 <varname>Sockets=</varname>, <varname>Service=</varname>, and <varname>Unit=</varname>
1403 settings. See
1404 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1405 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1406 <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1407 and
1408 <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>
1409 for details. <varname>TriggersBy=</varname> is created implicitly on the
1410 triggered unit.</para>
2116134b
ZJS
1411
1412 <para>Note: <varname>Following=</varname> is used to group device aliases and points to the
1413 "primary" device unit that systemd is using to track device state, usually corresponding to a
1414 sysfs path. It does not show up in the "target" unit.</para>
798d3a52
ZJS
1415 </refsect1>
1416
1417 <refsect1>
1418 <title>[Install] Section Options</title>
1419
be73bb48
LP
1420 <para>Unit files may include an <literal>[Install]</literal> section, which carries installation information for
1421 the unit. This section is not interpreted by
1422 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> during runtime; it is
1423 used by the <command>enable</command> and <command>disable</command> commands of the
1424 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> tool during
caa45f5b 1425 installation of a unit.</para>
798d3a52
ZJS
1426
1427 <variablelist class='unit-directives'>
1428 <varlistentry>
1429 <term><varname>Alias=</varname></term>
1430
f4bf8d2f 1431 <listitem><para>A space-separated list of additional names this unit shall be installed under. The names listed
1245e413 1432 here must have the same suffix (i.e. type) as the unit filename. This option may be specified more than once,
f4bf8d2f
LP
1433 in which case all listed names are used. At installation time, <command>systemctl enable</command> will create
1434 symlinks from these names to the unit filename. Note that not all unit types support such alias names, and this
1435 setting is not supported for them. Specifically, mount, slice, swap, and automount units do not support
1436 aliasing.</para></listitem>
798d3a52
ZJS
1437 </varlistentry>
1438
1439 <varlistentry>
1440 <term><varname>WantedBy=</varname></term>
1441 <term><varname>RequiredBy=</varname></term>
1442
1443 <listitem><para>This option may be used more than once, or a
1444 space-separated list of unit names may be given. A symbolic
1445 link is created in the <filename>.wants/</filename> or
1446 <filename>.requires/</filename> directory of each of the
1447 listed units when this unit is installed by <command>systemctl
1448 enable</command>. This has the effect that a dependency of
1449 type <varname>Wants=</varname> or <varname>Requires=</varname>
1450 is added from the listed unit to the current unit. The primary
1451 result is that the current unit will be started when the
1452 listed unit is started. See the description of
1453 <varname>Wants=</varname> and <varname>Requires=</varname> in
1454 the [Unit] section for details.</para>
1455
1456 <para><command>WantedBy=foo.service</command> in a service
1457 <filename>bar.service</filename> is mostly equivalent to
1458 <command>Alias=foo.service.wants/bar.service</command> in the
1459 same file. In case of template units, <command>systemctl
1460 enable</command> must be called with an instance name, and
1461 this instance will be added to the
1462 <filename>.wants/</filename> or
1463 <filename>.requires/</filename> list of the listed unit. E.g.
1464 <command>WantedBy=getty.target</command> in a service
1465 <filename>getty@.service</filename> will result in
1466 <command>systemctl enable getty@tty2.service</command>
1467 creating a
1468 <filename>getty.target.wants/getty@tty2.service</filename>
1469 link to <filename>getty@.service</filename>.
1470 </para></listitem>
1471 </varlistentry>
1472
1473 <varlistentry>
1474 <term><varname>Also=</varname></term>
1475
1476 <listitem><para>Additional units to install/deinstall when
1477 this unit is installed/deinstalled. If the user requests
1478 installation/deinstallation of a unit with this option
1479 configured, <command>systemctl enable</command> and
1480 <command>systemctl disable</command> will automatically
1481 install/uninstall units listed in this option as well.</para>
1482
1483 <para>This option may be used more than once, or a
1484 space-separated list of unit names may be
1485 given.</para></listitem>
1486 </varlistentry>
1487
1488 <varlistentry>
1489 <term><varname>DefaultInstance=</varname></term>
1490
1491 <listitem><para>In template unit files, this specifies for
1492 which instance the unit shall be enabled if the template is
1493 enabled without any explicitly set instance. This option has
1494 no effect in non-template unit files. The specified string
1495 must be usable as instance identifier.</para></listitem>
1496 </varlistentry>
1497 </variablelist>
1498
1499 <para>The following specifiers are interpreted in the Install
250e9fad 1500 section: %n, %N, %p, %i, %j, %U, %u, %m, %H, %b, %v. For their meaning
798d3a52
ZJS
1501 see the next section.
1502 </para>
1503 </refsect1>
1504
1505 <refsect1>
1506 <title>Specifiers</title>
1507
1508 <para>Many settings resolve specifiers which may be used to write
1509 generic unit files referring to runtime or unit parameters that
751223fe
ZJS
1510 are replaced when the unit files are loaded. Specifiers must be known
1511 and resolvable for the setting to be valid. The following
798d3a52
ZJS
1512 specifiers are understood:</para>
1513
1514 <table>
1515 <title>Specifiers available in unit files</title>
1516 <tgroup cols='3' align='left' colsep='1' rowsep='1'>
1517 <colspec colname="spec" />
1518 <colspec colname="mean" />
1519 <colspec colname="detail" />
1520 <thead>
1521 <row>
5a15caf4
ZJS
1522 <entry>Specifier</entry>
1523 <entry>Meaning</entry>
1524 <entry>Details</entry>
798d3a52
ZJS
1525 </row>
1526 </thead>
1527 <tbody>
1528 <row>
709f4c47
LP
1529 <entry><literal>%b</literal></entry>
1530 <entry>Boot ID</entry>
1531 <entry>The boot ID of the running system, formatted as string. See <citerefentry><refentrytitle>random</refentrytitle><manvolnum>4</manvolnum></citerefentry> for more information.</entry>
798d3a52
ZJS
1532 </row>
1533 <row>
709f4c47
LP
1534 <entry><literal>%C</literal></entry>
1535 <entry>Cache directory root</entry>
1536 <entry>This is either <filename>/var/cache</filename> (for the system manager) or the path <literal>$XDG_CACHE_HOME</literal> resolves to (for user managers).</entry>
798d3a52
ZJS
1537 </row>
1538 <row>
709f4c47
LP
1539 <entry><literal>%f</literal></entry>
1540 <entry>Unescaped filename</entry>
1541 <entry>This is either the unescaped instance name (if applicable) with <filename>/</filename> prepended (if applicable), or the unescaped prefix name prepended with <filename>/</filename>. This implements unescaping according to the rules for escaping absolute file system paths discussed above.</entry>
798d3a52
ZJS
1542 </row>
1543 <row>
709f4c47
LP
1544 <entry><literal>%h</literal></entry>
1545 <entry>User home directory</entry>
1546 <entry>This is the home directory of the user running the service manager instance. In case of the system manager this resolves to <literal>/root</literal>.</entry>
1547 </row>
1548 <row>
1549 <entry><literal>%H</literal></entry>
1550 <entry>Host name</entry>
1551 <entry>The hostname of the running system at the point in time the unit configuration is loaded.</entry>
798d3a52
ZJS
1552 </row>
1553 <row>
5a15caf4
ZJS
1554 <entry><literal>%i</literal></entry>
1555 <entry>Instance name</entry>
e1a7f622 1556 <entry>For instantiated units this is the string between the first <literal>@</literal> character and the type suffix. Empty for non-instantiated units.</entry>
798d3a52
ZJS
1557 </row>
1558 <row>
5a15caf4
ZJS
1559 <entry><literal>%I</literal></entry>
1560 <entry>Unescaped instance name</entry>
e1a7f622 1561 <entry>Same as <literal>%i</literal>, but with escaping undone.</entry>
798d3a52 1562 </row>
250e9fad
ZJS
1563 <row>
1564 <entry><literal>%j</literal></entry>
1565 <entry>Final component of the prefix</entry>
1566 <entry>This is the string between the last <literal>-</literal> and the end of the prefix name. If there is no <literal>-</literal>, this is the same as <literal>%p</literal>.</entry>
1567 </row>
1568 <row>
1569 <entry><literal>%J</literal></entry>
1570 <entry>Unescaped final component of the prefix</entry>
1571 <entry>Same as <literal>%j</literal>, but with escaping undone.</entry>
1572 </row>
798d3a52 1573 <row>
709f4c47
LP
1574 <entry><literal>%L</literal></entry>
1575 <entry>Log directory root</entry>
1576 <entry>This is either <filename>/var/log</filename> (for the system manager) or the path <literal>$XDG_CONFIG_HOME</literal> resolves to with <filename noindex='true'>/log</filename> appended (for user managers).</entry>
14068e17
LP
1577 </row>
1578 <row>
709f4c47
LP
1579 <entry><literal>%m</literal></entry>
1580 <entry>Machine ID</entry>
1581 <entry>The machine ID of the running system, formatted as string. See <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry> for more information.</entry>
14068e17
LP
1582 </row>
1583 <row>
709f4c47
LP
1584 <entry><literal>%n</literal></entry>
1585 <entry>Full unit name</entry>
1586 <entry></entry>
14068e17
LP
1587 </row>
1588 <row>
709f4c47
LP
1589 <entry><literal>%N</literal></entry>
1590 <entry>Full unit name</entry>
1591 <entry>Same as <literal>%n</literal>, but with the type suffix removed.</entry>
798d3a52
ZJS
1592 </row>
1593 <row>
709f4c47
LP
1594 <entry><literal>%p</literal></entry>
1595 <entry>Prefix name</entry>
1596 <entry>For instantiated units, this refers to the string before the first <literal>@</literal> character of the unit name. For non-instantiated units, same as <literal>%N</literal>.</entry>
798d3a52
ZJS
1597 </row>
1598 <row>
709f4c47
LP
1599 <entry><literal>%P</literal></entry>
1600 <entry>Unescaped prefix name</entry>
1601 <entry>Same as <literal>%p</literal>, but with escaping undone.</entry>
798d3a52
ZJS
1602 </row>
1603 <row>
5a15caf4
ZJS
1604 <entry><literal>%s</literal></entry>
1605 <entry>User shell</entry>
1606 <entry>This is the shell of the user running the service manager instance. In case of the system manager this resolves to <literal>/bin/sh</literal>.</entry>
798d3a52
ZJS
1607 </row>
1608 <row>
709f4c47
LP
1609 <entry><literal>%S</literal></entry>
1610 <entry>State directory root</entry>
1611 <entry>This is either <filename>/var/lib</filename> (for the system manager) or the path <literal>$XDG_CONFIG_HOME</literal> resolves to (for user managers).</entry>
798d3a52
ZJS
1612 </row>
1613 <row>
709f4c47
LP
1614 <entry><literal>%t</literal></entry>
1615 <entry>Runtime directory root</entry>
1616 <entry>This is either <filename>/run</filename> (for the system manager) or the path <literal>$XDG_RUNTIME_DIR</literal> resolves to (for user managers).</entry>
798d3a52 1617 </row>
b294e594
LP
1618 <row>
1619 <entry><literal>%T</literal></entry>
1620 <entry>Directory for temporary files</entry>
1621 <entry>This is either <filename>/tmp</filename> or the path <literal>$TMPDIR</literal>, <literal>$TEMP</literal> or <literal>$TMP</literal> are set to.</entry>
1622 </row>
798d3a52 1623 <row>
709f4c47
LP
1624 <entry><literal>%u</literal></entry>
1625 <entry>User name</entry>
1626 <entry>This is the name of the user running the service manager instance. In case of the system manager this resolves to <literal>root</literal>.</entry>
1627 </row>
1628 <row>
1629 <entry><literal>%U</literal></entry>
1630 <entry>User UID</entry>
1631 <entry>This is the numeric UID of the user running the service manager instance. In case of the system manager this resolves to <literal>0</literal>.</entry>
798d3a52
ZJS
1632 </row>
1633 <row>
5a15caf4
ZJS
1634 <entry><literal>%v</literal></entry>
1635 <entry>Kernel release</entry>
1636 <entry>Identical to <command>uname -r</command> output</entry>
798d3a52 1637 </row>
b294e594
LP
1638 <row>
1639 <entry><literal>%V</literal></entry>
1640 <entry>Directory for larger and persistent temporary files</entry>
1641 <entry>This is either <filename>/var/tmp</filename> or the path <literal>$TMPDIR</literal>, <literal>$TEMP</literal> or <literal>$TMP</literal> are set to.</entry>
1642 </row>
798d3a52 1643 <row>
5a15caf4
ZJS
1644 <entry><literal>%%</literal></entry>
1645 <entry>Single percent sign</entry>
1646 <entry>Use <literal>%%</literal> in place of <literal>%</literal> to specify a single percent sign.</entry>
798d3a52
ZJS
1647 </row>
1648 </tbody>
1649 </tgroup>
1650 </table>
798d3a52
ZJS
1651 </refsect1>
1652
1653 <refsect1>
1654 <title>Examples</title>
1655
1656 <example>
1657 <title>Allowing units to be enabled</title>
1658
1659 <para>The following snippet (highlighted) allows a unit (e.g.
1660 <filename>foo.service</filename>) to be enabled via
1661 <command>systemctl enable</command>:</para>
1662
1663 <programlisting>[Unit]
92b1e225
CS
1664Description=Foo
1665
1666[Service]
1667ExecStart=/usr/sbin/foo-daemon
1668
1669<emphasis>[Install]</emphasis>
1670<emphasis>WantedBy=multi-user.target</emphasis></programlisting>
1671
798d3a52
ZJS
1672 <para>After running <command>systemctl enable</command>, a
1673 symlink
12b42c76 1674 <filename>/etc/systemd/system/multi-user.target.wants/foo.service</filename>
798d3a52
ZJS
1675 linking to the actual unit will be created. It tells systemd to
1676 pull in the unit when starting
1677 <filename>multi-user.target</filename>. The inverse
1678 <command>systemctl disable</command> will remove that symlink
1679 again.</para>
1680 </example>
1681
1682 <example>
1683 <title>Overriding vendor settings</title>
1684
1685 <para>There are two methods of overriding vendor settings in
1686 unit files: copying the unit file from
12b42c76
TG
1687 <filename>/usr/lib/systemd/system</filename> to
1688 <filename>/etc/systemd/system</filename> and modifying the
798d3a52
ZJS
1689 chosen settings. Alternatively, one can create a directory named
1690 <filename><replaceable>unit</replaceable>.d/</filename> within
12b42c76 1691 <filename>/etc/systemd/system</filename> and place a drop-in
798d3a52
ZJS
1692 file <filename><replaceable>name</replaceable>.conf</filename>
1693 there that only changes the specific settings one is interested
1694 in. Note that multiple such drop-in files are read if
8331eaab 1695 present, processed in lexicographic order of their filename.</para>
798d3a52
ZJS
1696
1697 <para>The advantage of the first method is that one easily
1698 overrides the complete unit, the vendor unit is not parsed at
1699 all anymore. It has the disadvantage that improvements to the
1700 unit file by the vendor are not automatically incorporated on
1701 updates.</para>
1702
1703 <para>The advantage of the second method is that one only
1704 overrides the settings one specifically wants, where updates to
1705 the unit by the vendor automatically apply. This has the
1706 disadvantage that some future updates by the vendor might be
1707 incompatible with the local changes.</para>
1708
798d3a52
ZJS
1709 <para>This also applies for user instances of systemd, but with
1710 different locations for the unit files. See the section on unit
1711 load paths for further details.</para>
1712
1713 <para>Suppose there is a vendor-supplied unit
12b42c76 1714 <filename>/usr/lib/systemd/system/httpd.service</filename> with
798d3a52
ZJS
1715 the following contents:</para>
1716
1717 <programlisting>[Unit]
92b1e225
CS
1718Description=Some HTTP server
1719After=remote-fs.target sqldb.service
1720Requires=sqldb.service
1721AssertPathExists=/srv/webserver
1722
1723[Service]
1724Type=notify
1725ExecStart=/usr/sbin/some-fancy-httpd-server
1726Nice=5
1727
1728[Install]
1729WantedBy=multi-user.target</programlisting>
1730
798d3a52
ZJS
1731 <para>Now one wants to change some settings as an administrator:
1732 firstly, in the local setup, <filename>/srv/webserver</filename>
e2acdb6b 1733 might not exist, because the HTTP server is configured to use
798d3a52
ZJS
1734 <filename>/srv/www</filename> instead. Secondly, the local
1735 configuration makes the HTTP server also depend on a memory
1736 cache service, <filename>memcached.service</filename>, that
1737 should be pulled in (<varname>Requires=</varname>) and also be
1738 ordered appropriately (<varname>After=</varname>). Thirdly, in
1739 order to harden the service a bit more, the administrator would
1740 like to set the <varname>PrivateTmp=</varname> setting (see
912f003f 1741 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
798d3a52
ZJS
1742 for details). And lastly, the administrator would like to reset
1743 the niceness of the service to its default value of 0.</para>
1744
1745 <para>The first possibility is to copy the unit file to
12b42c76 1746 <filename>/etc/systemd/system/httpd.service</filename> and
798d3a52
ZJS
1747 change the chosen settings:</para>
1748
1749 <programlisting>[Unit]
92b1e225
CS
1750Description=Some HTTP server
1751After=remote-fs.target sqldb.service <emphasis>memcached.service</emphasis>
1752Requires=sqldb.service <emphasis>memcached.service</emphasis>
1753AssertPathExists=<emphasis>/srv/www</emphasis>
1754
1755[Service]
1756Type=notify
1757ExecStart=/usr/sbin/some-fancy-httpd-server
1758<emphasis>Nice=0</emphasis>
1759<emphasis>PrivateTmp=yes</emphasis>
1760
1761[Install]
1762WantedBy=multi-user.target</programlisting>
1763
798d3a52
ZJS
1764 <para>Alternatively, the administrator could create a drop-in
1765 file
12b42c76 1766 <filename>/etc/systemd/system/httpd.service.d/local.conf</filename>
798d3a52 1767 with the following contents:</para>
92b1e225 1768
798d3a52 1769 <programlisting>[Unit]
92b1e225
CS
1770After=memcached.service
1771Requires=memcached.service
1772# Reset all assertions and then re-add the condition we want
1773AssertPathExists=
1774AssertPathExists=/srv/www
1775
1776[Service]
1777Nice=0
1778PrivateTmp=yes</programlisting>
1779
afbc75e6
DB
1780 <para>Note that for drop-in files, if one wants to remove
1781 entries from a setting that is parsed as a list (and is not a
1782 dependency), such as <varname>AssertPathExists=</varname> (or
1783 e.g. <varname>ExecStart=</varname> in service units), one needs
1784 to first clear the list before re-adding all entries except the
1785 one that is to be removed. Dependencies (<varname>After=</varname>, etc.)
798d3a52
ZJS
1786 cannot be reset to an empty list, so dependencies can only be
1787 added in drop-ins. If you want to remove dependencies, you have
1788 to override the entire unit.</para>
0cf4c0d1 1789
798d3a52
ZJS
1790 </example>
1791 </refsect1>
1792
1793 <refsect1>
1794 <title>See Also</title>
1795 <para>
1796 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1797 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1798 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1799 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1800 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1801 <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1802 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1803 <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1804 <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1805 <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1806 <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1807 <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
798d3a52
ZJS
1808 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1809 <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1810 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1811 <citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1812 <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1813 <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
3ba3a79d 1814 <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>1</manvolnum></citerefentry>
798d3a52
ZJS
1815 </para>
1816 </refsect1>
d1ab0ca0
LP
1817
1818</refentry>