1<?xml version='1.0'?> 2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ 4<!ENTITY % entities SYSTEM "custom-entities.ent" > 5%entities; 6]> 7<!-- SPDX-License-Identifier: LGPL-2.1-or-later --> 8 9<refentry id="systemd.unit" 10 xmlns:xi="http://www.w3.org/2001/XInclude"> 11 12 <refentryinfo> 13 <title>systemd.unit</title> 14 <productname>systemd</productname> 15 </refentryinfo> 16 17 <refmeta> 18 <refentrytitle>systemd.unit</refentrytitle> 19 <manvolnum>5</manvolnum> 20 </refmeta> 21 22 <refnamediv> 23 <refname>systemd.unit</refname> 24 <refpurpose>Unit configuration</refpurpose> 25 </refnamediv> 26 27 <refsynopsisdiv> 28 <para><filename><replaceable>service</replaceable>.service</filename>, 29 <filename><replaceable>socket</replaceable>.socket</filename>, 30 <filename><replaceable>device</replaceable>.device</filename>, 31 <filename><replaceable>mount</replaceable>.mount</filename>, 32 <filename><replaceable>automount</replaceable>.automount</filename>, 33 <filename><replaceable>swap</replaceable>.swap</filename>, 34 <filename><replaceable>target</replaceable>.target</filename>, 35 <filename><replaceable>path</replaceable>.path</filename>, 36 <filename><replaceable>timer</replaceable>.timer</filename>, 37 <filename><replaceable>slice</replaceable>.slice</filename>, 38 <filename><replaceable>scope</replaceable>.scope</filename></para> 39 40 <refsect2> 41 <title>System Unit Search Path</title> 42 43 <para><literallayout><filename>/etc/systemd/system.control/*</filename> 44<filename>/run/systemd/system.control/*</filename> 45<filename>/run/systemd/transient/*</filename> 46<filename>/run/systemd/generator.early/*</filename> 47<filename>/etc/systemd/system/*</filename> 48<filename>/etc/systemd/system.attached/*</filename> 49<filename>/run/systemd/system/*</filename> 50<filename>/run/systemd/system.attached/*</filename> 51<filename>/run/systemd/generator/*</filename> 52<filename index='false'>…</filename> 53<filename>/usr/lib/systemd/system/*</filename> 54<filename>/run/systemd/generator.late/*</filename></literallayout></para> 55 </refsect2> 56 57 <refsect2> 58 <title>User Unit Search Path</title> 59 <para><literallayout><filename>~/.config/systemd/user.control/*</filename> 60<filename>$XDG_RUNTIME_DIR/systemd/user.control/*</filename> 61<filename>$XDG_RUNTIME_DIR/systemd/transient/*</filename> 62<filename>$XDG_RUNTIME_DIR/systemd/generator.early/*</filename> 63<filename>~/.config/systemd/user/*</filename> 64<filename>$XDG_CONFIG_DIRS/systemd/user/*</filename> 65<filename>/etc/systemd/user/*</filename> 66<filename>$XDG_RUNTIME_DIR/systemd/user/*</filename> 67<filename>/run/systemd/user/*</filename> 68<filename>$XDG_RUNTIME_DIR/systemd/generator/*</filename> 69<filename>$XDG_DATA_HOME/systemd/user/*</filename> 70<filename>$XDG_DATA_DIRS/systemd/user/*</filename> 71<filename index='false'>…</filename> 72<filename>/usr/lib/systemd/user/*</filename> 73<filename>$XDG_RUNTIME_DIR/systemd/generator.late/*</filename></literallayout></para> 74 </refsect2> 75 76 </refsynopsisdiv> 77 78 <refsect1> 79 <title>Description</title> 80 81 <para>A unit file is a plain text ini-style file that encodes information about a service, a 82 socket, a device, a mount point, an automount point, a swap file or partition, a start-up 83 target, a watched file system path, a timer controlled and supervised by 84 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, a 85 resource management slice or a group of externally created processes. See 86 <citerefentry><refentrytitle>systemd.syntax</refentrytitle><manvolnum>7</manvolnum></citerefentry> 87 for a general description of the syntax.</para> 88 89 <para>This man page lists the common configuration options of all 90 the unit types. These options need to be configured in the [Unit] 91 or [Install] sections of the unit files.</para> 92 93 <para>In addition to the generic [Unit] and [Install] sections 94 described here, each unit may have a type-specific section, e.g. 95 [Service] for a service unit. See the respective man pages for 96 more information: 97 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 98 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 99 <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 100 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 101 <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 102 <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 103 <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 104 <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 105 <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 106 <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 107 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>. 108 </para> 109 110 <para>Unit files are loaded from a set of paths determined during compilation, described in the next 111 section.</para> 112 113 <para>Valid unit names consist of a "name prefix" and a dot and a suffix specifying the unit type. The 114 "unit prefix" must consist of one or more valid characters (ASCII letters, digits, <literal>:</literal>, 115 <literal>-</literal>, <literal>_</literal>, <literal>.</literal>, and <literal>\</literal>). The total 116 length of the unit name including the suffix must not exceed 256 characters. The type suffix must be one 117 of <literal>.service</literal>, <literal>.socket</literal>, <literal>.device</literal>, 118 <literal>.mount</literal>, <literal>.automount</literal>, <literal>.swap</literal>, 119 <literal>.target</literal>, <literal>.path</literal>, <literal>.timer</literal>, 120 <literal>.slice</literal>, or <literal>.scope</literal>.</para> 121 122 <para>Units names can be parameterized by a single argument called the "instance name". The unit is then 123 constructed based on a "template file" which serves as the definition of multiple services or other 124 units. A template unit must have a single <literal>@</literal> at the end of the name (right before the 125 type suffix). The name of the full unit is formed by inserting the instance name between 126 <literal>@</literal> and the unit type suffix. In the unit file itself, the instance parameter may be 127 referred to using <literal>%i</literal> and other specifiers, see below.</para> 128 129 <para>Unit files may contain additional options on top of those listed here. If systemd encounters an 130 unknown option, it will write a warning log message but continue loading the unit. If an option or 131 section name is prefixed with <option>X-</option>, it is ignored completely by systemd. Options within an 132 ignored section do not need the prefix. Applications may use this to include additional information in 133 the unit files. To access those options, applications need to parse the unit files on their own.</para> 134 135 <para>Units can be aliased (have an alternative name), by creating a symlink from the new name to the 136 existing name in one of the unit search paths. For example, <filename>systemd-networkd.service</filename> 137 has the alias <filename>dbus-org.freedesktop.network1.service</filename>, created during installation as 138 a symlink, so when <command>systemd</command> is asked through D-Bus to load 139 <filename>dbus-org.freedesktop.network1.service</filename>, it'll load 140 <filename>systemd-networkd.service</filename>. As another example, <filename>default.target</filename> — 141 the default system target started at boot — is commonly aliased to either 142 <filename>multi-user.target</filename> or <filename>graphical.target</filename> to select what is started 143 by default. Alias names may be used in commands like <command>disable</command>, 144 <command>start</command>, <command>stop</command>, <command>status</command>, and similar, and in all 145 unit dependency directives, including <varname>Wants=</varname>, <varname>Requires=</varname>, 146 <varname>Before=</varname>, <varname>After=</varname>. Aliases cannot be used with the 147 <command>preset</command> command.</para> 148 149 <para>Aliases obey the following restrictions: a unit of a certain type (<literal>.service</literal>, 150 <literal>.socket</literal>, …) can only be aliased by a name with the same type suffix. A plain unit (not 151 a template or an instance), may only be aliased by a plain name. A template instance may only be aliased 152 by another template instance, and the instance part must be identical. A template may be aliased by 153 another template (in which case the alias applies to all instances of the template). As a special case, a 154 template instance (e.g. <literal>alias@inst.service</literal>) may be a symlink to different template 155 (e.g. <literal>template@inst.service</literal>). In that case, just this specific instance is aliased, 156 while other instances of the template (e.g. <literal>alias@foo.service</literal>, 157 <literal>alias@bar.service</literal>) are not aliased. Those rules preserve the requirement that the 158 instance (if any) is always uniquely defined for a given unit and all its aliases. The target of alias 159 symlink must point to a valid unit file location, i.e. the symlink target name must match the symlink 160 source name as described, and the destination path must be in one of the unit search paths, see UNIT FILE 161 LOAD PATH section below for more details. Note that the target file may not exist, i.e. the symlink may 162 be dangling.</para> 163 164 <para>Unit files may specify aliases through the <varname>Alias=</varname> directive in the [Install] 165 section. When the unit is enabled, symlinks will be created for those names, and removed when the unit is 166 disabled. For example, <filename>reboot.target</filename> specifies 167 <varname>Alias=ctrl-alt-del.target</varname>, so when enabled, the symlink 168 <filename>/etc/systemd/system/ctrl-alt-del.service</filename> pointing to the 169 <filename>reboot.target</filename> file will be created, and when 170 <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Del</keycap></keycombo> is invoked, 171 <command>systemd</command> will look for the <filename>ctrl-alt-del.service</filename> and execute 172 <filename>reboot.service</filename>. <command>systemd</command> does not look at the [Install] section at 173 all during normal operation, so any directives in that section only have an effect through the symlinks 174 created during enablement.</para> 175 176 <para>Along with a unit file <filename>foo.service</filename>, the directory 177 <filename>foo.service.wants/</filename> may exist. All unit files symlinked from such a directory are 178 implicitly added as dependencies of type <varname>Wants=</varname> to the unit. Similar functionality 179 exists for <varname>Requires=</varname> type dependencies as well, the directory suffix is 180 <filename>.requires/</filename> in this case. This functionality is useful to hook units into the 181 start-up of other units, without having to modify their unit files. For details about the semantics of 182 <varname>Wants=</varname> and <varname>Requires=</varname>, see below. The preferred way to create 183 symlinks in the <filename>.wants/</filename> or <filename>.requires/</filename> directories is by 184 specifying the dependency in [Install] section of the target unit, and creating the symlink in the file 185 system with the <command>enable</command> or <command>preset</command> commands of 186 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>. The 187 target can be a normal unit (either plain or a specific instance of a template unit). In case when the 188 source unit is a template, the target can also be a template, in which case the instance will be 189 "propagated" to the target unit to form a valid unit instance. The target of symlinks in 190 <filename>.wants/</filename> or <filename>.requires/</filename> must thus point to a valid unit file 191 location, i.e. the symlink target name must satisfy the described requirements, and the destination path 192 must be in one of the unit search paths, see UNIT FILE LOAD PATH section below for more details. Note 193 that the target file may not exist, i.e. the symlink may be dangling.</para> 194 195 <para>Along with a unit file <filename>foo.service</filename>, a "drop-in" directory 196 <filename>foo.service.d/</filename> may exist. All files with the suffix 197 <literal>.conf</literal> from this directory will be merged in the alphanumeric order and parsed 198 after the main unit file itself has been parsed. This is useful to alter or add configuration 199 settings for a unit, without having to modify unit files. Each drop-in file must contain appropriate 200 section headers. For instantiated units, this logic will first look for the instance 201 <literal>.d/</literal> subdirectory (e.g. <literal>foo@bar.service.d/</literal>) and read its 202 <literal>.conf</literal> files, followed by the template <literal>.d/</literal> subdirectory (e.g. 203 <literal>foo@.service.d/</literal>) and the <literal>.conf</literal> files there. Moreover for unit 204 names containing dashes (<literal>-</literal>), the set of directories generated by repeatedly 205 truncating the unit name after all dashes is searched too. Specifically, for a unit name 206 <filename>foo-bar-baz.service</filename> not only the regular drop-in directory 207 <filename>foo-bar-baz.service.d/</filename> is searched but also both <filename>foo-bar-.service.d/</filename> and 208 <filename>foo-.service.d/</filename>. This is useful for defining common drop-ins for a set of related units, whose 209 names begin with a common prefix. This scheme is particularly useful for mount, automount and slice units, whose 210 systematic naming structure is built around dashes as component separators. Note that equally named drop-in files 211 further down the prefix hierarchy override those further up, 212 i.e. <filename>foo-bar-.service.d/10-override.conf</filename> overrides 213 <filename>foo-.service.d/10-override.conf</filename>.</para> 214 215 <para>In cases of unit aliases (described above), dropins for the aliased name and all aliases are 216 loaded. In the example of <filename>default.target</filename> aliasing 217 <filename>graphical.target</filename>, <filename>default.target.d/</filename>, 218 <filename>default.target.wants/</filename>, <filename>default.target.requires/</filename>, 219 <filename>graphical.target.d/</filename>, <filename>graphical.target.wants/</filename>, 220 <filename>graphical.target.requires/</filename> would all be read. For templates, dropins for the 221 template, any template aliases, the template instance, and all alias instances are read. When just a 222 specific template instance is aliased, then the dropins for the target template, the target template 223 instance, and the alias template instance are read.</para> 224 225 <para>In addition to <filename>/etc/systemd/system</filename>, the drop-in <literal>.d/</literal> 226 directories for system services can be placed in <filename>/usr/lib/systemd/system</filename> or 227 <filename>/run/systemd/system</filename> directories. Drop-in files in <filename>/etc/</filename> 228 take precedence over those in <filename>/run/</filename> which in turn take precedence over those 229 in <filename>/usr/lib/</filename>. Drop-in files under any of these directories take precedence 230 over unit files wherever located. Multiple drop-in files with different names are applied in 231 lexicographic order, regardless of which of the directories they reside in.</para> 232 233 <para>Units also support a top-level drop-in with <filename><replaceable>type</replaceable>.d/</filename>, 234 where <replaceable>type</replaceable> may be e.g. <literal>service</literal> or <literal>socket</literal>, 235 that allows altering or adding to the settings of all corresponding unit files on the system. 236 The formatting and precedence of applying drop-in configurations follow what is defined above. 237 Files in <filename><replaceable>type</replaceable>.d/</filename> have lower precedence compared 238 to files in name-specific override directories. The usual rules apply: multiple drop-in files 239 with different names are applied in lexicographic order, regardless of which of the directories 240 they reside in, so a file in <filename><replaceable>type</replaceable>.d/</filename> applies 241 to a unit only if there are no drop-ins or masks with that name in directories with higher 242 precedence. See Examples.</para> 243 244 <para>Note that while systemd offers a flexible dependency system 245 between units it is recommended to use this functionality only 246 sparingly and instead rely on techniques such as bus-based or 247 socket-based activation which make dependencies implicit, 248 resulting in a both simpler and more flexible system.</para> 249 250 <para>As mentioned above, a unit may be instantiated from a template file. This allows creation 251 of multiple units from a single configuration file. If systemd looks for a unit configuration 252 file, it will first search for the literal unit name in the file system. If that yields no 253 success and the unit name contains an <literal>@</literal> character, systemd will look for a 254 unit template that shares the same name but with the instance string (i.e. the part between the 255 <literal>@</literal> character and the suffix) removed. Example: if a service 256 <filename>getty@tty3.service</filename> is requested and no file by that name is found, systemd 257 will look for <filename>getty@.service</filename> and instantiate a service from that 258 configuration file if it is found.</para> 259 260 <para>To refer to the instance string from within the 261 configuration file you may use the special <literal>%i</literal> 262 specifier in many of the configuration options. See below for 263 details.</para> 264 265 <para>If a unit file is empty (i.e. has the file size 0) or is 266 symlinked to <filename>/dev/null</filename>, its configuration 267 will not be loaded and it appears with a load state of 268 <literal>masked</literal>, and cannot be activated. Use this as an 269 effective way to fully disable a unit, making it impossible to 270 start it even manually.</para> 271 272 <para>The unit file format is covered by the 273 <ulink url="https://systemd.io/PORTABILITY_AND_STABILITY/">Interface 274 Portability and Stability Promise</ulink>.</para> 275 276 </refsect1> 277 278 <refsect1> 279 <title>String Escaping for Inclusion in Unit Names</title> 280 281 <para>Sometimes it is useful to convert arbitrary strings into unit names. To facilitate this, a method of string 282 escaping is used, in order to map strings containing arbitrary byte values (except <constant>NUL</constant>) into 283 valid unit names and their restricted character set. A common special case are unit names that reflect paths to 284 objects in the file system hierarchy. Example: a device unit <filename>dev-sda.device</filename> refers to a device 285 with the device node <filename index="false">/dev/sda</filename> in the file system.</para> 286 287 <para>The escaping algorithm operates as follows: given a string, any <literal>/</literal> character is 288 replaced by <literal>-</literal>, and all other characters which are not ASCII alphanumerics, 289 <literal>:</literal>, <literal>_</literal> or <literal>.</literal> are replaced by C-style 290 <literal>\x2d</literal> escapes. In addition, <literal>.</literal> is replaced with such a C-style escape 291 when it would appear as the first character in the escaped string.</para> 292 293 <para>When the input qualifies as absolute file system path, this algorithm is extended slightly: the path to the 294 root directory <literal>/</literal> is encoded as single dash <literal>-</literal>. In addition, any leading, 295 trailing or duplicate <literal>/</literal> characters are removed from the string before transformation. Example: 296 <filename index="false">/foo//bar/baz/</filename> becomes <literal>foo-bar-baz</literal>.</para> 297 298 <para>This escaping is fully reversible, as long as it is known whether the escaped string was a path (the 299 unescaping results are different for paths and non-path strings). The 300 <citerefentry><refentrytitle>systemd-escape</refentrytitle><manvolnum>1</manvolnum></citerefentry> command may be 301 used to apply and reverse escaping on arbitrary strings. Use <command>systemd-escape --path</command> to escape 302 path strings, and <command>systemd-escape</command> without <option>--path</option> otherwise.</para> 303 </refsect1> 304 305 <refsect1> 306 <title>Automatic dependencies</title> 307 308 <refsect2> 309 <title>Implicit Dependencies</title> 310 311 <para>A number of unit dependencies are implicitly established, depending on unit type and 312 unit configuration. These implicit dependencies can make unit configuration file cleaner. For 313 the implicit dependencies in each unit type, please refer to section "Implicit Dependencies" 314 in respective man pages.</para> 315 316 <para>For example, service units with <varname>Type=dbus</varname> automatically acquire 317 dependencies of type <varname>Requires=</varname> and <varname>After=</varname> on 318 <filename>dbus.socket</filename>. See 319 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry> 320 for details.</para> 321 </refsect2> 322 323 <refsect2> 324 <title>Default Dependencies</title> 325 326 <para>Default dependencies are similar to implicit dependencies, but can be turned on and off 327 by setting <varname>DefaultDependencies=</varname> to <varname>yes</varname> (the default) and 328 <varname>no</varname>, while implicit dependencies are always in effect. See section "Default 329 Dependencies" in respective man pages for the effect of enabling 330 <varname>DefaultDependencies=</varname> in each unit types.</para> 331 332 <para>For example, target units will complement all configured dependencies of type 333 <varname>Wants=</varname> or <varname>Requires=</varname> with dependencies of type 334 <varname>After=</varname> unless <varname>DefaultDependencies=no</varname> is set in the 335 specified units. See 336 <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry> 337 for details. Note that this behavior can be turned off by setting 338 <varname>DefaultDependencies=no</varname>.</para> 339 </refsect2> 340 </refsect1> 341 342 <refsect1> 343 <title>Unit File Load Path</title> 344 345 <para>Unit files are loaded from a set of paths determined during 346 compilation, described in the two tables below. Unit files found 347 in directories listed earlier override files with the same name in 348 directories lower in the list.</para> 349 350 <para>When the variable <varname>$SYSTEMD_UNIT_PATH</varname> is set, 351 the contents of this variable overrides the unit load path. If 352 <varname>$SYSTEMD_UNIT_PATH</varname> ends with an empty component 353 (<literal>:</literal>), the usual unit load path will be appended 354 to the contents of the variable.</para> 355 356 <table> 357 <title> 358 Load path when running in system mode (<option>--system</option>). 359 </title> 360 361 <tgroup cols='2'> 362 <colspec colname='path' /> 363 <colspec colname='expl' /> 364 <thead> 365 <row> 366 <entry>Path</entry> 367 <entry>Description</entry> 368 </row> 369 </thead> 370 <tbody> 371 <row> 372 <entry><filename>/etc/systemd/system.control</filename></entry> 373 <entry morerows="1">Persistent and transient configuration created using the dbus API</entry> 374 </row> 375 <row> 376 <entry><filename>/run/systemd/system.control</filename></entry> 377 </row> 378 <row> 379 <entry><filename>/run/systemd/transient</filename></entry> 380 <entry>Dynamic configuration for transient units</entry> 381 </row> 382 <row> 383 <entry><filename>/run/systemd/generator.early</filename></entry> 384 <entry>Generated units with high priority (see <replaceable>early-dir</replaceable> in <citerefentry 385 ><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry> 386 </row> 387 <row> 388 <entry><filename>/etc/systemd/system</filename></entry> 389 <entry>System units created by the administrator</entry> 390 </row> 391 <row> 392 <entry><filename>/run/systemd/system</filename></entry> 393 <entry>Runtime units</entry> 394 </row> 395 <row> 396 <entry><filename>/run/systemd/generator</filename></entry> 397 <entry>Generated units with medium priority (see <replaceable>normal-dir</replaceable> in <citerefentry 398 ><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry> 399 </row> 400 <row> 401 <entry><filename>/usr/local/lib/systemd/system</filename></entry> 402 <entry>System units installed by the administrator </entry> 403 </row> 404 <row> 405 <entry><filename>/usr/lib/systemd/system</filename></entry> 406 <entry>System units installed by the distribution package manager</entry> 407 </row> 408 <row> 409 <entry><filename>/run/systemd/generator.late</filename></entry> 410 <entry>Generated units with low priority (see <replaceable>late-dir</replaceable> in <citerefentry 411 ><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry> 412 </row> 413 </tbody> 414 </tgroup> 415 </table> 416 417 <table> 418 <title> 419 Load path when running in user mode (<option>--user</option>). 420 </title> 421 422 <tgroup cols='2'> 423 <colspec colname='path' /> 424 <colspec colname='expl' /> 425 <thead> 426 <row> 427 <entry>Path</entry> 428 <entry>Description</entry> 429 </row> 430 </thead> 431 <tbody> 432 <row> 433 <entry><filename>$XDG_CONFIG_HOME/systemd/user.control</filename> or <filename 434 >~/.config/systemd/user.control</filename></entry> 435 <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> 436 </row> 437 <row> 438 <entry><filename>$XDG_RUNTIME_DIR/systemd/user.control</filename></entry> 439 </row> 440 <row> 441 <entry><filename>$XDG_RUNTIME_DIR/systemd/transient</filename></entry> 442 <entry>Dynamic configuration for transient units</entry> 443 </row> 444 <row> 445 <entry><filename>$XDG_RUNTIME_DIR/systemd/generator.early</filename></entry> 446 <entry>Generated units with high priority (see <replaceable>early-dir</replaceable> in <citerefentry 447 ><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry> 448 </row> 449 <row> 450 <entry><filename>$XDG_CONFIG_HOME/systemd/user</filename> or <filename>$HOME/.config/systemd/user</filename></entry> 451 <entry>User configuration (<varname>$XDG_CONFIG_HOME</varname> is used if set, <filename>~/.config</filename> otherwise)</entry> 452 </row> 453 <row> 454 <entry><filename>$XDG_CONFIG_DIRS/systemd/user</filename> or <filename>/etc/xdg/systemd/user</filename></entry> 455 <entry>Additional configuration directories as specified by the XDG base directory specification (<varname>$XDG_CONFIG_DIRS</varname> is used if set, <filename>/etc/xdg</filename> otherwise)</entry> 456 </row> 457 <row> 458 <entry><filename>/etc/systemd/user</filename></entry> 459 <entry>User units created by the administrator</entry> 460 </row> 461 <row> 462 <entry><filename>$XDG_RUNTIME_DIR/systemd/user</filename></entry> 463 <entry>Runtime units (only used when $XDG_RUNTIME_DIR is set)</entry> 464 </row> 465 <row> 466 <entry><filename>/run/systemd/user</filename></entry> 467 <entry>Runtime units</entry> 468 </row> 469 <row> 470 <entry><filename>$XDG_RUNTIME_DIR/systemd/generator</filename></entry> 471 <entry>Generated units with medium priority (see <replaceable>normal-dir</replaceable> in <citerefentry 472 ><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry> 473 </row> 474 <row> 475 <entry><filename>$XDG_DATA_HOME/systemd/user</filename> or <filename>$HOME/.local/share/systemd/user</filename></entry> 476 <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> 477 </row> 478 <row> 479 <entry><filename>$XDG_DATA_DIRS/systemd/user</filename> or <filename>/usr/local/share/systemd/user</filename> and <filename>/usr/share/systemd/user</filename></entry> 480 <entry>Additional data directories as specified by the XDG base directory specification (<varname>$XDG_DATA_DIRS</varname> is used if set, <filename>/usr/local/share</filename> and <filename>/usr/share</filename> otherwise)</entry> 481 </row> 482 <row> 483 <entry><filename>$dir/systemd/user</filename> for each <varname index="false">$dir</varname> in <varname>$XDG_DATA_DIRS</varname></entry> 484 <entry>Additional locations for installed user units, one for each entry in <varname>$XDG_DATA_DIRS</varname></entry> 485 </row> 486 <row> 487 <entry><filename>/usr/local/lib/systemd/user</filename></entry> 488 <entry>User units installed by the administrator</entry> 489 </row> 490 <row> 491 <entry><filename>/usr/lib/systemd/user</filename></entry> 492 <entry>User units installed by the distribution package manager</entry> 493 </row> 494 <row> 495 <entry><filename>$XDG_RUNTIME_DIR/systemd/generator.late</filename></entry> 496 <entry>Generated units with low priority (see <replaceable>late-dir</replaceable> in <citerefentry 497 ><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>)</entry> 498 </row> 499 </tbody> 500 </tgroup> 501 </table> 502 503 <para>The set of load paths for the user manager instance may be augmented or 504 changed using various environment variables. And environment variables may in 505 turn be set using environment generators, see 506 <citerefentry><refentrytitle>systemd.environment-generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>. 507 In particular, <varname>$XDG_DATA_HOME</varname> and 508 <varname>$XDG_DATA_DIRS</varname> may be easily set using 509 <citerefentry><refentrytitle>systemd-environment-d-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>. 510 Thus, directories listed here are just the defaults. To see the actual list that 511 would be used based on compilation options and current environment use 512 <programlisting>systemd-analyze --user unit-paths</programlisting> 513 </para> 514 515 <para>Moreover, additional units might be loaded into systemd from directories not on the unit load path 516 by creating a symlink pointing to a unit file in the directories. You can use <command>systemctl 517 link</command> for this; see 518 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>. The file 519 system where the linked unit files are located must be accessible when systemd is started (e.g. anything 520 underneath <filename>/home/</filename> or <filename>/var/</filename> is not allowed, unless those 521 directories are located on the root file system).</para> 522 523 <para>It is important to distinguish "linked unit files" from "unit file aliases": any symlink where the 524 symlink <emphasis>target</emphasis> is within the unit load path becomes an alias: the source name and 525 the target file name must satisfy specific constraints listed above in the discussion of aliases, but the 526 symlink target doesn't have to exist, and in fact the symlink target path is not used, except to check 527 whether the target is within the unit load path. In contrast, a symlink which goes outside of the unit 528 load path signifies a linked unit file. The symlink is followed when loading the file, but the 529 destination name is otherwise unused (and may even not be a valid unit file name). For example, symlinks 530 <filename index='false'>/etc/systemd/system/alias1.service</filename> → <filename index='false'>service1.service</filename>, 531 <filename index='false'>/etc/systemd/system/alias2.service</filename> → <filename index='false'>/usr/lib/systemd/service1.service</filename>, 532 <filename index='false'>/etc/systemd/system/alias3.service</filename> → <filename index='false'>/etc/systemd/system/service1.service</filename> 533 are all valid aliases and <filename index='false'>service1.service</filename> will have 534 four names, even if the unit file is located at 535 <filename index='false'>/run/systemd/system/service1.service</filename>. In contrast, 536 a symlink <filename index='false'>/etc/systemd/system/link1.service</filename> → <filename index='false'>../link1_service_file</filename> 537 means that <filename index='false'>link1.service</filename> is a "linked unit" and the contents of 538 <filename index='false'>/etc/systemd/link1_service_file</filename> provide its configuration.</para> 539 </refsect1> 540 541 <refsect1> 542 <title>Unit Garbage Collection</title> 543 544 <para>The system and service manager loads a unit's configuration automatically when a unit is referenced for the 545 first time. It will automatically unload the unit configuration and state again when the unit is not needed anymore 546 ("garbage collection"). A unit may be referenced through a number of different mechanisms:</para> 547 548 <orderedlist> 549 <listitem><para>Another loaded unit references it with a dependency such as <varname>After=</varname>, 550 <varname>Wants=</varname>, …</para></listitem> 551 552 <listitem><para>The unit is currently starting, running, reloading or stopping.</para></listitem> 553 554 <listitem><para>The unit is currently in the <constant>failed</constant> state. (But see below.)</para></listitem> 555 556 <listitem><para>A job for the unit is pending.</para></listitem> 557 558 <listitem><para>The unit is pinned by an active IPC client program.</para></listitem> 559 560 <listitem><para>The unit is a special "perpetual" unit that is always active and loaded. Examples for perpetual 561 units are the root mount unit <filename>-.mount</filename> or the scope unit <filename>init.scope</filename> that 562 the service manager itself lives in.</para></listitem> 563 564 <listitem><para>The unit has running processes associated with it.</para></listitem> 565 </orderedlist> 566 567 <para>The garbage collection logic may be altered with the <varname>CollectMode=</varname> option, which allows 568 configuration whether automatic unloading of units that are in <constant>failed</constant> state is permissible, 569 see below.</para> 570 571 <para>Note that when a unit's configuration and state is unloaded, all execution results, such as exit codes, exit 572 signals, resource consumption and other statistics are lost, except for what is stored in the log subsystem.</para> 573 574 <para>Use <command>systemctl daemon-reload</command> or an equivalent command to reload unit configuration while 575 the unit is already loaded. In this case all configuration settings are flushed out and replaced with the new 576 configuration (which however might not be in effect immediately), however all runtime state is 577 saved/restored.</para> 578 </refsect1> 579 580 <refsect1> 581 <title>[Unit] Section Options</title> 582 583 <para>The unit file may include a [Unit] section, which carries 584 generic information about the unit that is not dependent on the 585 type of unit:</para> 586 587 <variablelist class='unit-directives'> 588 <varlistentry> 589 <term><varname>Description=</varname></term> 590 <listitem><para>A short human readable title of the unit. This may be used by 591 <command>systemd</command> (and other UIs) as a user-visible label for the unit, so this string 592 should identify the unit rather than describe it, despite the name. This string also shouldn't just 593 repeat the unit name. <literal>Apache2 Web Server</literal> is a good example. Bad examples are 594 <literal>high-performance light-weight HTTP server</literal> (too generic) or 595 <literal>Apache2</literal> (meaningless for people who do not know Apache, duplicates the unit 596 name). <command>systemd</command> may use this string as a noun in status messages (<literal>Starting 597 <replaceable>description</replaceable>...</literal>, <literal>Started 598 <replaceable>description</replaceable>.</literal>, <literal>Reached target 599 <replaceable>description</replaceable>.</literal>, <literal>Failed to start 600 <replaceable>description</replaceable>.</literal>), so it should be capitalized, and should not be a 601 full sentence, or a phrase with a continuous verb. Bad examples include <literal>exiting the 602 container</literal> or <literal>updating the database once per day.</literal>.</para> 603 </listitem> 604 </varlistentry> 605 606 <varlistentry> 607 <term><varname>Documentation=</varname></term> 608 <listitem><para>A space-separated list of URIs referencing 609 documentation for this unit or its configuration. Accepted are 610 only URIs of the types <literal>http://</literal>, 611 <literal>https://</literal>, <literal>file:</literal>, 612 <literal>info:</literal>, <literal>man:</literal>. For more 613 information about the syntax of these URIs, see <citerefentry 614 project='man-pages'><refentrytitle>uri</refentrytitle><manvolnum>7</manvolnum></citerefentry>. 615 The URIs should be listed in order of relevance, starting with 616 the most relevant. It is a good idea to first reference 617 documentation that explains what the unit's purpose is, 618 followed by how it is configured, followed by any other 619 related documentation. This option may be specified more than 620 once, in which case the specified list of URIs is merged. If 621 the empty string is assigned to this option, the list is reset 622 and all prior assignments will have no 623 effect.</para></listitem> 624 </varlistentry> 625 626 <varlistentry> 627 <term><varname>Wants=</varname></term> 628 629 <listitem><para>Configures (weak) requirement dependencies on other units. This option may be 630 specified more than once or multiple space-separated units may be specified in one option in which 631 case dependencies for all listed names will be created. Dependencies of this type may also be 632 configured outside of the unit configuration file by adding a symlink to a 633 <filename>.wants/</filename> directory accompanying the unit file. For details, see above.</para> 634 635 <para>Units listed in this option will be started if the configuring unit is. However, if the listed 636 units fail to start or cannot be added to the transaction, this has no impact on the validity of the 637 transaction as a whole, and this unit will still be started. This is the recommended way to hook 638 the start-up of one unit to the start-up of another unit.</para> 639 640 <para>Note that requirement dependencies do not influence the order in which services are started or 641 stopped. This has to be configured independently with the <varname>After=</varname> or 642 <varname>Before=</varname> options. If unit <filename>foo.service</filename> pulls in unit 643 <filename>bar.service</filename> as configured with <varname>Wants=</varname> and no ordering is 644 configured with <varname>After=</varname> or <varname>Before=</varname>, then both units will be 645 started simultaneously and without any delay between them if <filename>foo.service</filename> is 646 activated.</para></listitem> 647 </varlistentry> 648 649 <varlistentry> 650 <term><varname>Requires=</varname></term> 651 652 <listitem><para>Similar to <varname>Wants=</varname>, but declares a stronger requirement 653 dependency. Dependencies of this type may also be configured by adding a symlink to a 654 <filename>.requires/</filename> directory accompanying the unit file.</para> 655 656 <para>If this unit gets activated, the units listed will be activated as well. If one of 657 the other units fails to activate, and an ordering dependency <varname>After=</varname> on the 658 failing unit is set, this unit will not be started. Besides, with or without specifying 659 <varname>After=</varname>, this unit will be stopped (or restarted) if one of the other units is 660 explicitly stopped (or restarted).</para> 661 662 <para>Often, it is a better choice to use <varname>Wants=</varname> instead of 663 <varname>Requires=</varname> in order to achieve a system that is more robust when dealing with 664 failing services.</para> 665 666 <para>Note that this dependency type does not imply that the other unit always has to be in active state when 667 this unit is running. Specifically: failing condition checks (such as <varname>ConditionPathExists=</varname>, 668 <varname>ConditionPathIsSymbolicLink=</varname>, … — see below) do not cause the start job of a unit with a 669 <varname>Requires=</varname> dependency on it to fail. Also, some unit types may deactivate on their own (for 670 example, a service process may decide to exit cleanly, or a device may be unplugged by the user), which is not 671 propagated to units having a <varname>Requires=</varname> dependency. Use the <varname>BindsTo=</varname> 672 dependency type together with <varname>After=</varname> to ensure that a unit may never be in active state 673 without a specific other unit also in active state (see below).</para></listitem> 674 </varlistentry> 675 676 <varlistentry> 677 <term><varname>Requisite=</varname></term> 678 679 <listitem><para>Similar to <varname>Requires=</varname>. However, if the units listed here 680 are not started already, they will not be started and the starting of this unit will fail 681 immediately. <varname>Requisite=</varname> does not imply an ordering dependency, even if 682 both units are started in the same transaction. Hence this setting should usually be 683 combined with <varname>After=</varname>, to ensure this unit is not started before the other 684 unit.</para> 685 686 <para>When <varname>Requisite=b.service</varname> is used on 687 <filename>a.service</filename>, this dependency will show as 688 <varname>RequisiteOf=a.service</varname> in property listing of 689 <filename>b.service</filename>. <varname>RequisiteOf=</varname> 690 dependency cannot be specified directly.</para> 691 </listitem> 692 </varlistentry> 693 694 <varlistentry> 695 <term><varname>BindsTo=</varname></term> 696 697 <listitem><para>Configures requirement dependencies, very similar in style to 698 <varname>Requires=</varname>. However, this dependency type is stronger: in addition to the effect of 699 <varname>Requires=</varname> it declares that if the unit bound to is stopped, this unit will be stopped 700 too. This means a unit bound to another unit that suddenly enters inactive state will be stopped too. 701 Units can suddenly, unexpectedly enter inactive state for different reasons: the main process of a service unit 702 might terminate on its own choice, the backing device of a device unit might be unplugged or the mount point of 703 a mount unit might be unmounted without involvement of the system and service manager.</para> 704 705 <para>When used in conjunction with <varname>After=</varname> on the same unit the behaviour of 706 <varname>BindsTo=</varname> is even stronger. In this case, the unit bound to strictly has to be in active 707 state for this unit to also be in active state. This not only means a unit bound to another unit that suddenly 708 enters inactive state, but also one that is bound to another unit that gets skipped due to a failed condition 709 check (such as <varname>ConditionPathExists=</varname>, <varname>ConditionPathIsSymbolicLink=</varname>, … — 710 see below) will be stopped, should it be running. Hence, in many cases it is best to combine 711 <varname>BindsTo=</varname> with <varname>After=</varname>.</para> 712 713 <para>When <varname>BindsTo=b.service</varname> is used on 714 <filename>a.service</filename>, this dependency will show as 715 <varname>BoundBy=a.service</varname> in property listing of 716 <filename>b.service</filename>. <varname>BoundBy=</varname> 717 dependency cannot be specified directly.</para> 718 </listitem> 719 </varlistentry> 720 721 <varlistentry> 722 <term><varname>PartOf=</varname></term> 723 724 <listitem><para>Configures dependencies similar to 725 <varname>Requires=</varname>, but limited to stopping and 726 restarting of units. When systemd stops or restarts the units 727 listed here, the action is propagated to this unit. Note that 728 this is a one-way dependency — changes to this unit do not 729 affect the listed units.</para> 730 731 <para>When <varname>PartOf=b.service</varname> is used on 732 <filename>a.service</filename>, this dependency will show as 733 <varname>ConsistsOf=a.service</varname> in property listing of 734 <filename>b.service</filename>. <varname>ConsistsOf=</varname> 735 dependency cannot be specified directly.</para> 736 </listitem> 737 </varlistentry> 738 739 <varlistentry> 740 <term><varname>Upholds=</varname></term> 741 742 <listitem><para>Configures dependencies similar to <varname>Wants=</varname>, but as long as this unit 743 is up, all units listed in <varname>Upholds=</varname> are started whenever found to be inactive or 744 failed, and no job is queued for them. While a <varname>Wants=</varname> dependency on another unit 745 has a one-time effect when this units started, a <varname>Upholds=</varname> dependency on it has a 746 continuous effect, constantly restarting the unit if necessary. This is an alternative to the 747 <varname>Restart=</varname> setting of service units, to ensure they are kept running whatever 748 happens.</para> 749 750 <para>When <varname>Upholds=b.service</varname> is used on <filename>a.service</filename>, this 751 dependency will show as <varname>UpheldBy=a.service</varname> in the property listing of 752 <filename>b.service</filename>. The <varname>UpheldBy=</varname> dependency cannot be specified 753 directly.</para> 754 </listitem> 755 </varlistentry> 756 757 <varlistentry> 758 <term><varname>Conflicts=</varname></term> 759 760 <listitem><para>A space-separated list of unit names. Configures negative requirement 761 dependencies. If a unit has a <varname>Conflicts=</varname> setting on another unit, starting the 762 former will stop the latter and vice versa.</para> 763 764 <para>Note that this setting does not imply an ordering dependency, similarly to the 765 <varname>Wants=</varname> and <varname>Requires=</varname> dependencies described above. This means 766 that to ensure that the conflicting unit is stopped before the other unit is started, an 767 <varname>After=</varname> or <varname>Before=</varname> dependency must be declared. It doesn't 768 matter which of the two ordering dependencies is used, because stop jobs are always ordered before 769 start jobs, see the discussion in <varname>Before=</varname>/<varname>After=</varname> below.</para> 770 771 <para>If unit A that conflicts with unit B is scheduled to 772 be started at the same time as B, the transaction will either 773 fail (in case both are required parts of the transaction) or be 774 modified to be fixed (in case one or both jobs are not a 775 required part of the transaction). In the latter case, the job 776 that is not required will be removed, or in case both are 777 not required, the unit that conflicts will be started and the 778 unit that is conflicted is stopped.</para></listitem> 779 </varlistentry> 780 781 <varlistentry> 782 <term><varname>Before=</varname></term> 783 <term><varname>After=</varname></term> 784 785 <listitem><para>These two settings expect a space-separated list of unit names. They may be specified 786 more than once, in which case dependencies for all listed names are created.</para> 787 788 <para>Those two settings configure ordering dependencies between units. If unit 789 <filename>foo.service</filename> contains the setting <option>Before=bar.service</option> and both 790 units are being started, <filename>bar.service</filename>'s start-up is delayed until 791 <filename>foo.service</filename> has finished starting up. <varname>After=</varname> is the inverse 792 of <varname>Before=</varname>, i.e. while <varname>Before=</varname> ensures that the configured unit 793 is started before the listed unit begins starting up, <varname>After=</varname> ensures the opposite, 794 that the listed unit is fully started up before the configured unit is started.</para> 795 796 <para>When two units with an ordering dependency between them are shut down, the inverse of the 797 start-up order is applied. I.e. if a unit is configured with <varname>After=</varname> on another 798 unit, the former is stopped before the latter if both are shut down. Given two units with any 799 ordering dependency between them, if one unit is shut down and the other is started up, the shutdown 800 is ordered before the start-up. It doesn't matter if the ordering dependency is 801 <varname>After=</varname> or <varname>Before=</varname>, in this case. It also doesn't matter which 802 of the two is shut down, as long as one is shut down and the other is started up; the shutdown is 803 ordered before the start-up in all cases. If two units have no ordering dependencies between them, 804 they are shut down or started up simultaneously, and no ordering takes place. It depends on the unit 805 type when precisely a unit has finished starting up. Most importantly, for service units start-up is 806 considered completed for the purpose of <varname>Before=</varname>/<varname>After=</varname> when all 807 its configured start-up commands have been invoked and they either failed or reported start-up 808 success. Note that this does includes <varname>ExecStartPost=</varname> (or 809 <varname>ExecStopPost=</varname> for the shutdown case).</para> 810 811 <para>Note that those settings are independent of and orthogonal to the requirement dependencies as 812 configured by <varname>Requires=</varname>, <varname>Wants=</varname>, <varname>Requisite=</varname>, 813 or <varname>BindsTo=</varname>. It is a common pattern to include a unit name in both the 814 <varname>After=</varname> and <varname>Wants=</varname> options, in which case the unit listed will 815 be started before the unit that is configured with these options.</para> 816 817 <para>Note that <varname>Before=</varname> dependencies on device units have no effect and are not 818 supported. Devices generally become available as a result of an external hotplug event, and systemd 819 creates the corresponding device unit without delay.</para></listitem> 820 </varlistentry> 821 822 <varlistentry> 823 <term><varname>OnFailure=</varname></term> 824 825 <listitem><para>A space-separated list of one or more units that are activated when this unit enters 826 the <literal>failed</literal> state. A service unit using <varname>Restart=</varname> enters the 827 failed state only after the start limits are reached.</para></listitem> 828 </varlistentry> 829 830 <varlistentry> 831 <term><varname>OnSuccess=</varname></term> 832 833 <listitem><para>A space-separated list of one or more units that are activated when this unit enters 834 the <literal>inactive</literal> state.</para></listitem> 835 </varlistentry> 836 837 <varlistentry> 838 <term><varname>PropagatesReloadTo=</varname></term> 839 <term><varname>ReloadPropagatedFrom=</varname></term> 840 841 <listitem><para>A space-separated list of one or more units to which reload requests from this unit 842 shall be propagated to, or units from which reload requests shall be propagated to this unit, 843 respectively. Issuing a reload request on a unit will automatically also enqueue reload requests on 844 all units that are linked to it using these two settings.</para></listitem> 845 </varlistentry> 846 847 <varlistentry> 848 <term><varname>PropagatesStopTo=</varname></term> 849 <term><varname>StopPropagatedFrom=</varname></term> 850 851 <listitem><para>A space-separated list of one or more units to which stop requests from this unit 852 shall be propagated to, or units from which stop requests shall be propagated to this unit, 853 respectively. Issuing a stop request on a unit will automatically also enqueue stop requests on all 854 units that are linked to it using these two settings.</para></listitem> 855 </varlistentry> 856 857 <varlistentry> 858 <term><varname>JoinsNamespaceOf=</varname></term> 859 860 <listitem><para>For units that start processes (such as service units), lists one or more other units 861 whose network and/or temporary file namespace to join. This only applies to unit types which support 862 the <varname>PrivateNetwork=</varname>, <varname>NetworkNamespacePath=</varname>, 863 <varname>PrivateIPC=</varname>, <varname>IPCNamespacePath=</varname>, and 864 <varname>PrivateTmp=</varname> directives (see 865 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> for 866 details). If a unit that has this setting set is started, its processes will see the same 867 <filename>/tmp/</filename>, <filename>/var/tmp/</filename>, IPC namespace and network namespace as 868 one listed unit that is started. If multiple listed units are already started, it is not defined 869 which namespace is joined. Note that this setting only has an effect if 870 <varname>PrivateNetwork=</varname>/<varname>NetworkNamespacePath=</varname>, 871 <varname>PrivateIPC=</varname>/<varname>IPCNamespacePath=</varname> and/or 872 <varname>PrivateTmp=</varname> is enabled for both the unit that joins the namespace and the unit 873 whose namespace is joined.</para></listitem> 874 </varlistentry> 875 876 <varlistentry> 877 <term><varname>RequiresMountsFor=</varname></term> 878 879 <listitem><para>Takes a space-separated list of absolute 880 paths. Automatically adds dependencies of type 881 <varname>Requires=</varname> and <varname>After=</varname> for 882 all mount units required to access the specified path.</para> 883 884 <para>Mount points marked with <option>noauto</option> are not 885 mounted automatically through <filename>local-fs.target</filename>, 886 but are still honored for the purposes of this option, i.e. they 887 will be pulled in by this unit.</para></listitem> 888 </varlistentry> 889 890 <varlistentry> 891 <term><varname>OnFailureJobMode=</varname></term> 892 893 <listitem><para>Takes a value of 894 <literal>fail</literal>, 895 <literal>replace</literal>, 896 <literal>replace-irreversibly</literal>, 897 <literal>isolate</literal>, 898 <literal>flush</literal>, 899 <literal>ignore-dependencies</literal> or 900 <literal>ignore-requirements</literal>. Defaults to 901 <literal>replace</literal>. Specifies how the units listed in 902 <varname>OnFailure=</varname> will be enqueued. See 903 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s 904 <option>--job-mode=</option> option for details on the 905 possible values. If this is set to <literal>isolate</literal>, 906 only a single unit may be listed in 907 <varname>OnFailure=</varname>.</para></listitem> 908 </varlistentry> 909 910 <varlistentry> 911 <term><varname>IgnoreOnIsolate=</varname></term> 912 913 <listitem><para>Takes a boolean argument. If <option>true</option>, this unit will not be stopped 914 when isolating another unit. Defaults to <option>false</option> for service, target, socket, timer, 915 and path units, and <option>true</option> for slice, scope, device, swap, mount, and automount 916 units.</para></listitem> 917 </varlistentry> 918 919 <varlistentry> 920 <term><varname>StopWhenUnneeded=</varname></term> 921 922 <listitem><para>Takes a boolean argument. If 923 <option>true</option>, this unit will be stopped when it is no 924 longer used. Note that, in order to minimize the work to be 925 executed, systemd will not stop units by default unless they 926 are conflicting with other units, or the user explicitly 927 requested their shut down. If this option is set, a unit will 928 be automatically cleaned up if no other active unit requires 929 it. Defaults to <option>false</option>.</para></listitem> 930 </varlistentry> 931 932 <varlistentry> 933 <term><varname>RefuseManualStart=</varname></term> 934 <term><varname>RefuseManualStop=</varname></term> 935 936 <listitem><para>Takes a boolean argument. If 937 <option>true</option>, this unit can only be activated or 938 deactivated indirectly. In this case, explicit start-up or 939 termination requested by the user is denied, however if it is 940 started or stopped as a dependency of another unit, start-up 941 or termination will succeed. This is mostly a safety feature 942 to ensure that the user does not accidentally activate units 943 that are not intended to be activated explicitly, and not 944 accidentally deactivate units that are not intended to be 945 deactivated. These options default to 946 <option>false</option>.</para></listitem> 947 </varlistentry> 948 949 <varlistentry> 950 <term><varname>AllowIsolate=</varname></term> 951 952 <listitem><para>Takes a boolean argument. If 953 <option>true</option>, this unit may be used with the 954 <command>systemctl isolate</command> command. Otherwise, this 955 will be refused. It probably is a good idea to leave this 956 disabled except for target units that shall be used similar to 957 runlevels in SysV init systems, just as a precaution to avoid 958 unusable system states. This option defaults to 959 <option>false</option>.</para></listitem> 960 </varlistentry> 961 962 <varlistentry> 963 <term><varname>DefaultDependencies=</varname></term> 964 965 <listitem><para>Takes a boolean argument. If 966 <option>yes</option>, (the default), a few default 967 dependencies will implicitly be created for the unit. The 968 actual dependencies created depend on the unit type. For 969 example, for service units, these dependencies ensure that the 970 service is started only after basic system initialization is 971 completed and is properly terminated on system shutdown. See 972 the respective man pages for details. Generally, only services 973 involved with early boot or late shutdown should set this 974 option to <option>no</option>. It is highly recommended to 975 leave this option enabled for the majority of common units. If 976 set to <option>no</option>, this option does not disable 977 all implicit dependencies, just non-essential 978 ones.</para></listitem> 979 </varlistentry> 980 981 <varlistentry> 982 <term><varname>CollectMode=</varname></term> 983 984 <listitem><para>Tweaks the "garbage collection" algorithm for this unit. Takes one of <option>inactive</option> 985 or <option>inactive-or-failed</option>. If set to <option>inactive</option> the unit will be unloaded if it is 986 in the <constant>inactive</constant> state and is not referenced by clients, jobs or other units — however it 987 is not unloaded if it is in the <constant>failed</constant> state. In <option>failed</option> mode, failed 988 units are not unloaded until the user invoked <command>systemctl reset-failed</command> on them to reset the 989 <constant>failed</constant> state, or an equivalent command. This behaviour is altered if this option is set to 990 <option>inactive-or-failed</option>: in this case the unit is unloaded even if the unit is in a 991 <constant>failed</constant> state, and thus an explicitly resetting of the <constant>failed</constant> state is 992 not necessary. Note that if this mode is used unit results (such as exit codes, exit signals, consumed 993 resources, …) are flushed out immediately after the unit completed, except for what is stored in the logging 994 subsystem. Defaults to <option>inactive</option>.</para> 995 </listitem> 996 </varlistentry> 997 998 <varlistentry> 999 <term><varname>FailureAction=</varname></term> 1000 <term><varname>SuccessAction=</varname></term> 1001 1002 <listitem><para>Configure the action to take when the unit stops and enters a failed state or inactive state. 1003 Takes one of <option>none</option>, <option>reboot</option>, <option>reboot-force</option>, 1004 <option>reboot-immediate</option>, <option>poweroff</option>, <option>poweroff-force</option>, 1005 <option>poweroff-immediate</option>, <option>exit</option>, and <option>exit-force</option>. In system mode, 1006 all options are allowed. In user mode, only <option>none</option>, <option>exit</option>, and 1007 <option>exit-force</option> are allowed. Both options default to <option>none</option>.</para> 1008 1009 <para>If <option>none</option> is set, no action will be triggered. <option>reboot</option> causes a reboot 1010 following the normal shutdown procedure (i.e. equivalent to <command>systemctl reboot</command>). 1011 <option>reboot-force</option> causes a forced reboot which will terminate all processes forcibly but should 1012 cause no dirty file systems on reboot (i.e. equivalent to <command>systemctl reboot -f</command>) and 1013 <option>reboot-immediate</option> causes immediate execution of the 1014 <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> system call, which 1015 might result in data loss (i.e. equivalent to <command>systemctl reboot -ff</command>). Similarly, 1016 <option>poweroff</option>, <option>poweroff-force</option>, <option>poweroff-immediate</option> have the effect 1017 of powering down the system with similar semantics. <option>exit</option> causes the manager to exit following 1018 the normal shutdown procedure, and <option>exit-force</option> causes it terminate without shutting down 1019 services. When <option>exit</option> or <option>exit-force</option> is used by default the exit status of the 1020 main process of the unit (if this applies) is returned from the service manager. However, this may be overridden 1021 with <varname>FailureActionExitStatus=</varname>/<varname>SuccessActionExitStatus=</varname>, see 1022 below.</para></listitem> 1023 </varlistentry> 1024 1025 <varlistentry> 1026 <term><varname>FailureActionExitStatus=</varname></term> 1027 <term><varname>SuccessActionExitStatus=</varname></term> 1028 1029 <listitem><para>Controls the exit status to propagate back to an invoking container manager (in case of a 1030 system service) or service manager (in case of a user manager) when the 1031 <varname>FailureAction=</varname>/<varname>SuccessAction=</varname> are set to <option>exit</option> or 1032 <option>exit-force</option> and the action is triggered. By default the exit status of the main process of the 1033 triggering unit (if this applies) is propagated. Takes a value in the range 0…255 or the empty string to 1034 request default behaviour.</para></listitem> 1035 </varlistentry> 1036 1037 <varlistentry> 1038 <term><varname>JobTimeoutSec=</varname></term> 1039 <term><varname>JobRunningTimeoutSec=</varname></term> 1040 1041 <listitem><para><varname>JobTimeoutSec=</varname> specifies a timeout for the whole job that starts 1042 running when the job is queued. <varname>JobRunningTimeoutSec=</varname> specifies a timeout that 1043 starts running when the queued job is actually started. If either limit is reached, the job will be 1044 cancelled, the unit however will not change state or even enter the <literal>failed</literal> mode. 1045 </para> 1046 1047 <para>Both settings take a time span with the default unit of seconds, but other units may be 1048 specified, see 1049 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>5</manvolnum></citerefentry>. 1050 The default is <literal>infinity</literal> (job timeouts disabled), except for device units where 1051 <varname>JobRunningTimeoutSec=</varname> defaults to <varname>DefaultTimeoutStartSec=</varname>. 1052 </para> 1053 1054 <para>Note: these timeouts are independent from any unit-specific timeouts (for example, the timeout 1055 set with <varname>TimeoutStartSec=</varname> in service units). The job timeout has no effect on the 1056 unit itself. Or in other words: unit-specific timeouts are useful to abort unit state changes, and 1057 revert them. The job timeout set with this option however is useful to abort only the job waiting for 1058 the unit state to change.</para> 1059 </listitem> 1060 </varlistentry> 1061 1062 <varlistentry> 1063 <term><varname>JobTimeoutAction=</varname></term> 1064 <term><varname>JobTimeoutRebootArgument=</varname></term> 1065 1066 <listitem><para><varname>JobTimeoutAction=</varname> optionally configures an additional action to 1067 take when the timeout is hit, see description of <varname>JobTimeoutSec=</varname> and 1068 <varname>JobRunningTimeoutSec=</varname> above. It takes the same values as 1069 <varname>StartLimitAction=</varname>. Defaults to <option>none</option>.</para> 1070 1071 <para><varname>JobTimeoutRebootArgument=</varname> configures an optional reboot string to pass to 1072 the <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> system 1073 call.</para></listitem> 1074 </varlistentry> 1075 1076 <varlistentry> 1077 <term><varname>StartLimitIntervalSec=<replaceable>interval</replaceable></varname></term> 1078 <term><varname>StartLimitBurst=<replaceable>burst</replaceable></varname></term> 1079 1080 <listitem><para>Configure unit start rate limiting. Units which are started more than 1081 <replaceable>burst</replaceable> times within an <replaceable>interval</replaceable> time span are 1082 not permitted to start any more. Use <varname>StartLimitIntervalSec=</varname> to configure the 1083 checking interval and <varname>StartLimitBurst=</varname> to configure how many starts per interval 1084 are allowed.</para> 1085 1086 <para><replaceable>interval</replaceable> is a time span with the default unit of seconds, but other 1087 units may be specified, see 1088 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>5</manvolnum></citerefentry>. 1089 Defaults to <varname>DefaultStartLimitIntervalSec=</varname> in manager configuration file, and may 1090 be set to 0 to disable any kind of rate limiting. <replaceable>burst</replaceable> is a number and 1091 defaults to <varname>DefaultStartLimitBurst=</varname> in manager configuration file.</para> 1092 1093 <para>These configuration options are particularly useful in conjunction with the service setting 1094 <varname>Restart=</varname> (see 1095 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>); 1096 however, they apply to all kinds of starts (including manual), not just those triggered by the 1097 <varname>Restart=</varname> logic.</para> 1098 1099 <para>Note that units which are configured for <varname>Restart=</varname>, and which reach the start 1100 limit are not attempted to be restarted anymore; however, they may still be restarted manually or 1101 from a timer or socket at a later point, after the <replaceable>interval</replaceable> has passed. 1102 From that point on, the restart logic is activated again. <command>systemctl reset-failed</command> 1103 will cause the restart rate counter for a service to be flushed, which is useful if the administrator 1104 wants to manually start a unit and the start limit interferes with that. Rate-limiting is enforced 1105 after any unit condition checks are executed, and hence unit activations with failing conditions do 1106 not count towards the rate limit.</para> 1107 1108 <para>When a unit is unloaded due to the garbage collection logic (see above) its rate limit counters 1109 are flushed out too. This means that configuring start rate limiting for a unit that is not 1110 referenced continuously has no effect.</para> 1111 1112 <para>This setting does not apply to slice, target, device, and scope units, since they are unit 1113 types whose activation may either never fail, or may succeed only a single time.</para></listitem> 1114 </varlistentry> 1115 1116 <varlistentry> 1117 <term><varname>StartLimitAction=</varname></term> 1118 1119 <listitem><para>Configure an additional action to take if the rate limit configured with 1120 <varname>StartLimitIntervalSec=</varname> and <varname>StartLimitBurst=</varname> is hit. Takes the same 1121 values as the <varname>FailureAction=</varname>/<varname>SuccessAction=</varname> settings. If 1122 <option>none</option> is set, hitting the rate limit will trigger no action except that 1123 the start will not be permitted. Defaults to <option>none</option>.</para></listitem> 1124 </varlistentry> 1125 1126 <varlistentry> 1127 <term><varname>RebootArgument=</varname></term> 1128 <listitem><para>Configure the optional argument for the 1129 <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry> system call if 1130 <varname>StartLimitAction=</varname> or <varname>FailureAction=</varname> is a reboot action. This 1131 works just like the optional argument to <command>systemctl reboot</command> command.</para></listitem> 1132 </varlistentry> 1133 1134 <varlistentry> 1135 <term><varname>SourcePath=</varname></term> 1136 <listitem><para>A path to a configuration file this unit has 1137 been generated from. This is primarily useful for 1138 implementation of generator tools that convert configuration 1139 from an external configuration file format into native unit 1140 files. This functionality should not be used in normal 1141 units.</para></listitem> 1142 </varlistentry> 1143 </variablelist> 1144 1145 <refsect2> 1146 <title>Conditions and Asserts</title> 1147 1148 <para>Unit files may also include a number of <varname index="false">Condition…=</varname> and <varname 1149 index="false">Assert…=</varname> settings. Before the unit is started, systemd will verify that the 1150 specified conditions and asserts are true. If not, the starting of the unit will be (mostly silently) 1151 skipped (in case of conditions), or aborted with an error message (in case of asserts). Failing 1152 conditions or asserts will not result in the unit being moved into the <literal>failed</literal> 1153 state. The conditions and asserts are checked at the time the queued start job is to be executed. The 1154 ordering dependencies are still respected, so other units are still pulled in and ordered as if this 1155 unit was successfully activated, and the conditions and asserts are executed the precise moment the 1156 unit would normally start and thus can validate system state after the units ordered before completed 1157 initialization. Use condition expressions for skipping units that do not apply to the local system, for 1158 example because the kernel or runtime environment doesn't require their functionality. 1159 </para> 1160 1161 <para>If multiple conditions are specified, the unit will be executed if all of them apply (i.e. a 1162 logical AND is applied). Condition checks can use a pipe symbol (<literal>|</literal>) after the equals 1163 sign (<literal>Condition…=|…</literal>), which causes the condition to become a 1164 <emphasis>triggering</emphasis> condition. If at least one triggering condition is defined for a unit, 1165 then the unit will be started if at least one of the triggering conditions of the unit applies and all 1166 of the regular (i.e. non-triggering) conditions apply. If you prefix an argument with the pipe symbol 1167 and an exclamation mark, the pipe symbol must be passed first, the exclamation second. If any of these 1168 options is assigned the empty string, the list of conditions is reset completely, all previous 1169 condition settings (of any kind) will have no effect.</para> 1170 1171 <para>The <varname>AssertArchitecture=</varname>, <varname>AssertVirtualization=</varname>, … options 1172 are similar to conditions but cause the start job to fail (instead of being skipped). The failed check 1173 is logged. Units with failed conditions are considered to be in a clean state and will be garbage 1174 collected if they are not referenced. This means that when queried, the condition failure may or may 1175 not show up in the state of the unit.</para> 1176 1177 <para>Note that neither assertion nor condition expressions result in unit state changes. Also note 1178 that both are checked at the time the job is to be executed, i.e. long after depending jobs and it 1179 itself were queued. Thus, neither condition nor assertion expressions are suitable for conditionalizing 1180 unit dependencies.</para> 1181 1182 <para>The <command>condition</command> verb of 1183 <citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry> can 1184 be used to test condition and assert expressions.</para> 1185 1186 <para>Except for <varname>ConditionPathIsSymbolicLink=</varname>, all path checks follow symlinks.</para> 1187 1188 <variablelist class='unit-directives'> 1189 <varlistentry> 1190 <term><varname>ConditionArchitecture=</varname></term> 1191 1192 <listitem><para>Check whether the system is running on a specific architecture. Takes one of 1193 <literal>x86</literal>, 1194 <literal>x86-64</literal>, 1195 <literal>ppc</literal>, 1196 <literal>ppc-le</literal>, 1197 <literal>ppc64</literal>, 1198 <literal>ppc64-le</literal>, 1199 <literal>ia64</literal>, 1200 <literal>parisc</literal>, 1201 <literal>parisc64</literal>, 1202 <literal>s390</literal>, 1203 <literal>s390x</literal>, 1204 <literal>sparc</literal>, 1205 <literal>sparc64</literal>, 1206 <literal>mips</literal>, 1207 <literal>mips-le</literal>, 1208 <literal>mips64</literal>, 1209 <literal>mips64-le</literal>, 1210 <literal>alpha</literal>, 1211 <literal>arm</literal>, 1212 <literal>arm-be</literal>, 1213 <literal>arm64</literal>, 1214 <literal>arm64-be</literal>, 1215 <literal>sh</literal>, 1216 <literal>sh64</literal>, 1217 <literal>m68k</literal>, 1218 <literal>tilegx</literal>, 1219 <literal>cris</literal>, 1220 <literal>arc</literal>, 1221 <literal>arc-be</literal>, or 1222 <literal>native</literal>.</para> 1223 1224 <para>The architecture is determined from the information returned by 1225 <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry> 1226 and is thus subject to 1227 <citerefentry><refentrytitle>personality</refentrytitle><manvolnum>2</manvolnum></citerefentry>. 1228 Note that a <varname>Personality=</varname> setting in the same unit file has no effect on this 1229 condition. A special architecture name <literal>native</literal> is mapped to the architecture the 1230 system manager itself is compiled for. The test may be negated by prepending an exclamation 1231 mark.</para> 1232 </listitem> 1233 </varlistentry> 1234 1235 <varlistentry> 1236 <term><varname>ConditionFirmware=</varname></term> 1237 1238 <listitem><para>Check whether the system's firmware is of a certain type. Possible values are: 1239 <literal>uefi</literal> (for systems with EFI), 1240 <literal>device-tree</literal> (for systems with a device tree) and 1241 <literal>device-tree-compatible(xyz)</literal> (for systems with a device tree that is compatible to <literal>xyz</literal>).</para> 1242 </listitem> 1243 </varlistentry> 1244 1245 <varlistentry> 1246 <term><varname>ConditionVirtualization=</varname></term> 1247 1248 <listitem><para>Check whether the system is executed in a virtualized environment and optionally 1249 test whether it is a specific implementation. Takes either boolean value to check if being executed 1250 in any virtualized environment, or one of 1251 <literal>vm</literal> and 1252 <literal>container</literal> to test against a generic type of virtualization solution, or one of 1253 <literal>qemu</literal>, 1254 <literal>kvm</literal>, 1255 <literal>amazon</literal>, 1256 <literal>zvm</literal>, 1257 <literal>vmware</literal>, 1258 <literal>microsoft</literal>, 1259 <literal>oracle</literal>, 1260 <literal>powervm</literal>, 1261 <literal>xen</literal>, 1262 <literal>bochs</literal>, 1263 <literal>uml</literal>, 1264 <literal>bhyve</literal>, 1265 <literal>qnx</literal>, 1266 <literal>openvz</literal>, 1267 <literal>lxc</literal>, 1268 <literal>lxc-libvirt</literal>, 1269 <literal>systemd-nspawn</literal>, 1270 <literal>docker</literal>, 1271 <literal>podman</literal>, 1272 <literal>rkt</literal>, 1273 <literal>wsl</literal>, 1274 <literal>proot</literal>, 1275 <literal>pouch</literal>, 1276 <literal>acrn</literal> to test 1277 against a specific implementation, or 1278 <literal>private-users</literal> to check whether we are running in a user namespace. See 1279 <citerefentry><refentrytitle>systemd-detect-virt</refentrytitle><manvolnum>1</manvolnum></citerefentry> 1280 for a full list of known virtualization technologies and their identifiers. If multiple 1281 virtualization technologies are nested, only the innermost is considered. The test may be negated 1282 by prepending an exclamation mark.</para> 1283 </listitem> 1284 </varlistentry> 1285 1286 <varlistentry> 1287 <term><varname>ConditionHost=</varname></term> 1288 1289 <listitem><para><varname>ConditionHost=</varname> may be used to match against the hostname or 1290 machine ID of the host. This either takes a hostname string (optionally with shell style globs) 1291 which is tested against the locally set hostname as returned by 1292 <citerefentry><refentrytitle>gethostname</refentrytitle><manvolnum>2</manvolnum></citerefentry>, or 1293 a machine ID formatted as string (see 1294 <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>). 1295 The test may be negated by prepending an exclamation mark.</para> 1296 </listitem> 1297 </varlistentry> 1298 1299 <varlistentry> 1300 <term><varname>ConditionKernelCommandLine=</varname></term> 1301 1302 <listitem><para><varname>ConditionKernelCommandLine=</varname> may be used to check whether a 1303 specific kernel command line option is set (or if prefixed with the exclamation mark — unset). The 1304 argument must either be a single word, or an assignment (i.e. two words, separated by 1305 <literal>=</literal>). In the former case the kernel command line is searched for the word 1306 appearing as is, or as left hand side of an assignment. In the latter case, the exact assignment is 1307 looked for with right and left hand side matching. This operates on the kernel command line 1308 communicated to userspace via <filename>/proc/cmdline</filename>, except when the service manager 1309 is invoked as payload of a container manager, in which case the command line of <filename>PID 1310 1</filename> is used instead (i.e. <filename>/proc/1/cmdline</filename>).</para> 1311 </listitem> 1312 </varlistentry> 1313 1314 <varlistentry> 1315 <term><varname>ConditionKernelVersion=</varname></term> 1316 1317 <listitem><para><varname>ConditionKernelVersion=</varname> may be used to check whether the kernel 1318 version (as reported by <command>uname -r</command>) matches a certain expression (or if prefixed 1319 with the exclamation mark does not match it). The argument must be a list of (potentially quoted) 1320 expressions. For each of the expressions, if it starts with one of <literal><</literal>, 1321 <literal><=</literal>, <literal>=</literal>, <literal>!=</literal>, <literal>>=</literal>, 1322 <literal>></literal> a relative version comparison is done, otherwise the specified string is 1323 matched with shell-style globs.</para> 1324 1325 <para>Note that using the kernel version string is an unreliable way to determine which features 1326 are supported by a kernel, because of the widespread practice of backporting drivers, features, and 1327 fixes from newer upstream kernels into older versions provided by distributions. Hence, this check 1328 is inherently unportable and should not be used for units which may be used on different 1329 distributions.</para> 1330 </listitem> 1331 </varlistentry> 1332 1333 <varlistentry> 1334 <term><varname>ConditionEnvironment=</varname></term> 1335 1336 <listitem><para><varname>ConditionEnvironment=</varname> may be used to check whether a specific 1337 environment variable is set (or if prefixed with the exclamation mark — unset) in the service 1338 manager's environment block. 1339 1340 The argument may be a single word, to check if the variable with this name is defined in the 1341 environment block, or an assignment 1342 (<literal><replaceable>name</replaceable>=<replaceable>value</replaceable></literal>), to check if 1343 the variable with this exact value is defined. Note that the environment block of the service 1344 manager itself is checked, i.e. not any variables defined with <varname>Environment=</varname> or 1345 <varname>EnvironmentFile=</varname>, as described above. This is particularly useful when the 1346 service manager runs inside a containerized environment or as per-user service manager, in order to 1347 check for variables passed in by the enclosing container manager or PAM.</para> 1348 </listitem> 1349 </varlistentry> 1350 1351 <varlistentry> 1352 <term><varname>ConditionSecurity=</varname></term> 1353 1354 <listitem><para><varname>ConditionSecurity=</varname> may be used to check whether the given 1355 security technology is enabled on the system. Currently, the recognized values are 1356 <literal>selinux</literal>, <literal>apparmor</literal>, <literal>tomoyo</literal>, 1357 <literal>ima</literal>, <literal>smack</literal>, <literal>audit</literal>, 1358 <literal>uefi-secureboot</literal> and <literal>tpm2</literal>. The test may be negated by prepending 1359 an exclamation mark.</para> 1360 </listitem> 1361 </varlistentry> 1362 1363 <varlistentry> 1364 <term><varname>ConditionCapability=</varname></term> 1365 1366 <listitem><para>Check whether the given capability exists in the capability bounding set of the 1367 service manager (i.e. this does not check whether capability is actually available in the permitted 1368 or effective sets, see 1369 <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry> 1370 for details). Pass a capability name such as <literal>CAP_MKNOD</literal>, possibly prefixed with 1371 an exclamation mark to negate the check.</para> 1372 </listitem> 1373 </varlistentry> 1374 1375 <varlistentry> 1376 <term><varname>ConditionACPower=</varname></term> 1377 1378 <listitem><para>Check whether the system has AC power, or is exclusively battery powered at the 1379 time of activation of the unit. This takes a boolean argument. If set to <literal>true</literal>, 1380 the condition will hold only if at least one AC connector of the system is connected to a power 1381 source, or if no AC connectors are known. Conversely, if set to <literal>false</literal>, the 1382 condition will hold only if there is at least one AC connector known and all AC connectors are 1383 disconnected from a power source.</para> 1384 </listitem> 1385 </varlistentry> 1386 1387 <varlistentry> 1388 <term><varname>ConditionNeedsUpdate=</varname></term> 1389 1390 <listitem><para>Takes one of <filename>/var/</filename> or <filename>/etc/</filename> as argument, 1391 possibly prefixed with a <literal>!</literal> (to invert the condition). This condition may be 1392 used to conditionalize units on whether the specified directory requires an update because 1393 <filename>/usr/</filename>'s modification time is newer than the stamp file 1394 <filename>.updated</filename> in the specified directory. This is useful to implement offline 1395 updates of the vendor operating system resources in <filename>/usr/</filename> that require updating 1396 of <filename>/etc/</filename> or <filename>/var/</filename> on the next following boot. Units making 1397 use of this condition should order themselves before 1398 <citerefentry><refentrytitle>systemd-update-done.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, 1399 to make sure they run before the stamp file's modification time gets reset indicating a completed 1400 update.</para> 1401 1402 <para>If the <varname>systemd.condition-needs-update=</varname> option is specified on the kernel 1403 command line (taking a boolean), it will override the result of this condition check, taking 1404 precedence over any file modification time checks. If the kernel command line option is used, 1405 <filename>systemd-update-done.service</filename> will not have immediate effect on any following 1406 <varname>ConditionNeedsUpdate=</varname> checks, until the system is rebooted where the kernel 1407 command line option is not specified anymore.</para> 1408 1409 <para>Note that to make this scheme effective, the timestamp of <filename>/usr/</filename> should 1410 be explicitly updated after its contents are modified. The kernel will automatically update 1411 modification timestamp on a directory only when immediate children of a directory are modified; an 1412 modification of nested files will not automatically result in mtime of <filename>/usr/</filename> 1413 being updated.</para> 1414 1415 <para>Also note that if the update method includes a call to execute appropriate post-update steps 1416 itself, it should not touch the timestamp of <filename>/usr/</filename>. In a typical distribution 1417 packaging scheme, packages will do any required update steps as part of the installation or 1418 upgrade, to make package contents immediately usable. <varname>ConditionNeedsUpdate=</varname> 1419 should be used with other update mechanisms where such an immediate update does not 1420 happen.</para></listitem> 1421 </varlistentry> 1422 1423 <varlistentry> 1424 <term><varname>ConditionFirstBoot=</varname></term> 1425 1426 <listitem><para>Takes a boolean argument. This condition may be used to conditionalize units on 1427 whether the system is booting up for the first time. This roughly means that <filename>/etc/</filename> 1428 is unpopulated (for details, see "First Boot Semantics" in 1429 <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>). 1430 This may be used to populate <filename>/etc/</filename> on the first boot after factory reset, or 1431 when a new system instance boots up for the first time.</para> 1432 1433 <para>For robustness, units with <varname>ConditionFirstBoot=yes</varname> should order themselves 1434 before <filename>first-boot-complete.target</filename> and pull in this passive target with 1435 <varname>Wants=</varname>. This ensures that in a case of an aborted first boot, these units will 1436 be re-run during the next system startup.</para> 1437 1438 <para>If the <varname>systemd.condition-first-boot=</varname> option is specified on the kernel 1439 command line (taking a boolean), it will override the result of this condition check, taking 1440 precedence over <filename>/etc/machine-id</filename> existence checks.</para> 1441 </listitem> 1442 </varlistentry> 1443 1444 <varlistentry> 1445 <term><varname>ConditionPathExists=</varname></term> 1446 1447 <listitem><para>Check for the existence of a file. If the specified absolute path name does not exist, 1448 the condition will fail. If the absolute path name passed to 1449 <varname>ConditionPathExists=</varname> is prefixed with an exclamation mark 1450 (<literal>!</literal>), the test is negated, and the unit is only started if the path does not 1451 exist.</para> 1452 </listitem> 1453 </varlistentry> 1454 1455 <varlistentry> 1456 <term><varname>ConditionPathExistsGlob=</varname></term> 1457 1458 <listitem><para><varname>ConditionPathExistsGlob=</varname> is similar to 1459 <varname>ConditionPathExists=</varname>, but checks for the existence of at least one file or 1460 directory matching the specified globbing pattern.</para> 1461 </listitem> 1462 </varlistentry> 1463 1464 <varlistentry> 1465 <term><varname>ConditionPathIsDirectory=</varname></term> 1466 1467 <listitem><para><varname>ConditionPathIsDirectory=</varname> is similar to 1468 <varname>ConditionPathExists=</varname> but verifies that a certain path exists and is a 1469 directory.</para> 1470 </listitem> 1471 </varlistentry> 1472 1473 <varlistentry> 1474 <term><varname>ConditionPathIsSymbolicLink=</varname></term> 1475 1476 <listitem><para><varname>ConditionPathIsSymbolicLink=</varname> is similar to 1477 <varname>ConditionPathExists=</varname> but verifies that a certain path exists and is a symbolic 1478 link.</para> 1479 </listitem> 1480 </varlistentry> 1481 1482 <varlistentry> 1483 <term><varname>ConditionPathIsMountPoint=</varname></term> 1484 1485 <listitem><para><varname>ConditionPathIsMountPoint=</varname> is similar to 1486 <varname>ConditionPathExists=</varname> but verifies that a certain path exists and is a mount 1487 point.</para> 1488 </listitem> 1489 </varlistentry> 1490 1491 <varlistentry> 1492 <term><varname>ConditionPathIsReadWrite=</varname></term> 1493 1494 <listitem><para><varname>ConditionPathIsReadWrite=</varname> is similar to 1495 <varname>ConditionPathExists=</varname> but verifies that the underlying file system is readable 1496 and writable (i.e. not mounted read-only).</para> 1497 </listitem> 1498 </varlistentry> 1499 1500 <varlistentry> 1501 <term><varname>ConditionPathIsEncrypted=</varname></term> 1502 1503 <listitem><para><varname>ConditionPathIsEncrypted=</varname> is similar to 1504 <varname>ConditionPathExists=</varname> but verifies that the underlying file system's backing 1505 block device is encrypted using dm-crypt/LUKS. Note that this check does not cover ext4 1506 per-directory encryption, and only detects block level encryption. Moreover, if the specified path 1507 resides on a file system on top of a loopback block device, only encryption above the loopback device is 1508 detected. It is not detected whether the file system backing the loopback block device is encrypted.</para> 1509 </listitem> 1510 </varlistentry> 1511 1512 <varlistentry> 1513 <term><varname>ConditionDirectoryNotEmpty=</varname></term> 1514 1515 <listitem><para><varname>ConditionDirectoryNotEmpty=</varname> is similar to 1516 <varname>ConditionPathExists=</varname> but verifies that a certain path exists and is a non-empty 1517 directory.</para> 1518 </listitem> 1519 </varlistentry> 1520 1521 <varlistentry> 1522 <term><varname>ConditionFileNotEmpty=</varname></term> 1523 1524 <listitem><para><varname>ConditionFileNotEmpty=</varname> is similar to 1525 <varname>ConditionPathExists=</varname> but verifies that a certain path exists and refers to a 1526 regular file with a non-zero size.</para> 1527 </listitem> 1528 </varlistentry> 1529 1530 <varlistentry> 1531 <term><varname>ConditionFileIsExecutable=</varname></term> 1532 1533 <listitem><para><varname>ConditionFileIsExecutable=</varname> is similar to 1534 <varname>ConditionPathExists=</varname> but verifies that a certain path exists, is a regular file, 1535 and marked executable.</para> 1536 </listitem> 1537 </varlistentry> 1538 1539 <varlistentry> 1540 <term><varname>ConditionUser=</varname></term> 1541 1542 <listitem><para><varname>ConditionUser=</varname> takes a numeric <literal>UID</literal>, a UNIX 1543 user name, or the special value <literal>@system</literal>. This condition may be used to check 1544 whether the service manager is running as the given user. The special value 1545 <literal>@system</literal> can be used to check if the user id is within the system user 1546 range. This option is not useful for system services, as the system manager exclusively runs as the 1547 root user, and thus the test result is constant.</para> 1548 </listitem> 1549 </varlistentry> 1550 1551 <varlistentry> 1552 <term><varname>ConditionGroup=</varname></term> 1553 1554 <listitem><para><varname>ConditionGroup=</varname> is similar to <varname>ConditionUser=</varname> 1555 but verifies that the service manager's real or effective group, or any of its auxiliary groups, 1556 match the specified group or GID. This setting does not support the special value 1557 <literal>@system</literal>.</para> 1558 </listitem> 1559 </varlistentry> 1560 1561 <varlistentry> 1562 <term><varname>ConditionControlGroupController=</varname></term> 1563 1564 <listitem><para>Check whether given cgroup controllers (e.g. <literal>cpu</literal>) are available 1565 for use on the system or whether the legacy v1 cgroup or the modern v2 cgroup hierarchy is used. 1566 </para> 1567 1568 <para>Multiple controllers may be passed with a space separating them; in this case the condition 1569 will only pass if all listed controllers are available for use. Controllers unknown to systemd are 1570 ignored. Valid controllers are <literal>cpu</literal>, <literal>cpuacct</literal>, 1571 <literal>io</literal>, <literal>blkio</literal>, <literal>memory</literal>, 1572 <literal>devices</literal>, and <literal>pids</literal>. Even if available in the kernel, a 1573 particular controller may not be available if it was disabled on the kernel command line with 1574 <varname>cgroup_disable=controller</varname>.</para> 1575 1576 <para>Alternatively, two special strings <literal>v1</literal> and <literal>v2</literal> may be 1577 specified (without any controller names). <literal>v2</literal> will pass if the unified v2 cgroup 1578 hierarchy is used, and <literal>v1</literal> will pass if the legacy v1 hierarchy or the hybrid 1579 hierarchy are used (see the discussion of <varname>systemd.unified_cgroup_hierarchy</varname> and 1580 <varname>systemd.legacy_systemd_cgroup_controller</varname> in 1581 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry> 1582 for more information).</para> 1583 </listitem> 1584 </varlistentry> 1585 1586 <varlistentry> 1587 <term><varname>ConditionMemory=</varname></term> 1588 1589 <listitem><para>Verify that the specified amount of system memory is available to the current 1590 system. Takes a memory size in bytes as argument, optionally prefixed with a comparison operator 1591 <literal><</literal>, <literal><=</literal>, <literal>=</literal>, <literal>!=</literal>, 1592 <literal>>=</literal>, <literal>></literal>. On bare-metal systems compares the amount of 1593 physical memory in the system with the specified size, adhering to the specified comparison 1594 operator. In containers compares the amount of memory assigned to the container instead.</para> 1595 </listitem> 1596 </varlistentry> 1597 1598 <varlistentry> 1599 <term><varname>ConditionCPUs=</varname></term> 1600 1601 <listitem><para>Verify that the specified number of CPUs is available to the current system. Takes 1602 a number of CPUs as argument, optionally prefixed with a comparison operator 1603 <literal><</literal>, <literal><=</literal>, <literal>=</literal>, <literal>!=</literal>, 1604 <literal>>=</literal>, <literal>></literal>. Compares the number of CPUs in the CPU affinity 1605 mask configured of the service manager itself with the specified number, adhering to the specified 1606 comparison operator. On physical systems the number of CPUs in the affinity mask of the service 1607 manager usually matches the number of physical CPUs, but in special and virtual environments might 1608 differ. In particular, in containers the affinity mask usually matches the number of CPUs assigned 1609 to the container and not the physically available ones.</para></listitem> 1610 </varlistentry> 1611 1612 <varlistentry> 1613 <term><varname>ConditionCPUFeature=</varname></term> 1614 1615 <listitem><para>Verify that a given CPU feature is available via the <literal>CPUID</literal> 1616 instruction. This condition only does something on i386 and x86-64 processors. On other 1617 processors it is assumed that the CPU does not support the given feature. It checks the leaves 1618 <literal>1</literal>, <literal>7</literal>, <literal>0x80000001</literal>, and 1619 <literal>0x80000007</literal>. Valid values are: 1620 <literal>fpu</literal>, 1621 <literal>vme</literal>, 1622 <literal>de</literal>, 1623 <literal>pse</literal>, 1624 <literal>tsc</literal>, 1625 <literal>msr</literal>, 1626 <literal>pae</literal>, 1627 <literal>mce</literal>, 1628 <literal>cx8</literal>, 1629 <literal>apic</literal>, 1630 <literal>sep</literal>, 1631 <literal>mtrr</literal>, 1632 <literal>pge</literal>, 1633 <literal>mca</literal>, 1634 <literal>cmov</literal>, 1635 <literal>pat</literal>, 1636 <literal>pse36</literal>, 1637 <literal>clflush</literal>, 1638 <literal>mmx</literal>, 1639 <literal>fxsr</literal>, 1640 <literal>sse</literal>, 1641 <literal>sse2</literal>, 1642 <literal>ht</literal>, 1643 <literal>pni</literal>, 1644 <literal>pclmul</literal>, 1645 <literal>monitor</literal>, 1646 <literal>ssse3</literal>, 1647 <literal>fma3</literal>, 1648 <literal>cx16</literal>, 1649 <literal>sse4_1</literal>, 1650 <literal>sse4_2</literal>, 1651 <literal>movbe</literal>, 1652 <literal>popcnt</literal>, 1653 <literal>aes</literal>, 1654 <literal>xsave</literal>, 1655 <literal>osxsave</literal>, 1656 <literal>avx</literal>, 1657 <literal>f16c</literal>, 1658 <literal>rdrand</literal>, 1659 <literal>bmi1</literal>, 1660 <literal>avx2</literal>, 1661 <literal>bmi2</literal>, 1662 <literal>rdseed</literal>, 1663 <literal>adx</literal>, 1664 <literal>sha_ni</literal>, 1665 <literal>syscall</literal>, 1666 <literal>rdtscp</literal>, 1667 <literal>lm</literal>, 1668 <literal>lahf_lm</literal>, 1669 <literal>abm</literal>, 1670 <literal>constant_tsc</literal>.</para> 1671 </listitem> 1672 </varlistentry> 1673 1674 <varlistentry> 1675 <term><varname>ConditionOSRelease=</varname></term> 1676 1677 <listitem><para>Verify that a specific <literal>key=value</literal> pair is set in the host's 1678 <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> 1679 1680 <para>Other than exact matching with <literal>=</literal>, and <literal>!=</literal>, relative 1681 comparisons are supported for versioned parameters (e.g. <literal>VERSION_ID</literal>). The 1682 comparator can be one of <literal><</literal>, <literal><=</literal>, <literal>=</literal>, 1683 <literal>!=</literal>, <literal>>=</literal> and <literal>></literal>.</para> 1684 </listitem> 1685 </varlistentry> 1686 1687 <varlistentry> 1688 <term><varname>ConditionMemoryPressure=</varname></term> 1689 <term><varname>ConditionCPUPressure=</varname></term> 1690 <term><varname>ConditionIOPressure=</varname></term> 1691 1692 <listitem><para>Verify that the overall system (memory, CPU or IO) pressure is below or equal to a threshold. 1693 This setting takes a threshold value as argument. It can be specified as a simple percentage value, 1694 suffixed with <literal>%</literal>, in which case the pressure will be measured as an average over the last 1695 five minutes before the attempt to start the unit is performed. 1696 Alternatively, the average timespan can also be specified using <literal>/</literal> as a separator, for 1697 example: <literal>10%/1min</literal>. The supported timespans match what the kernel provides, and are 1698 limited to <literal>10sec</literal>, <literal>1min</literal> and <literal>5min</literal>. The 1699 <literal>full</literal> PSI will be checked first, and if not found <literal>some</literal> will be 1700 checked. For more details, see the documentation on <ulink 1701 url="https://www.kernel.org/doc/html/latest/accounting/psi.html">PSI (Pressure Stall Information) 1702 </ulink>.</para> 1703 1704 <para>Optionally, the threshold value can be prefixed with the slice unit under which the pressure will be checked, 1705 followed by a <literal>:</literal>. If the slice unit is not specified, the overall system pressure will be measured, 1706 instead of a particular cgroup's.</para> 1707 </listitem> 1708 </varlistentry> 1709 1710 <varlistentry> 1711 <term><varname>AssertArchitecture=</varname></term> 1712 <term><varname>AssertVirtualization=</varname></term> 1713 <term><varname>AssertHost=</varname></term> 1714 <term><varname>AssertKernelCommandLine=</varname></term> 1715 <term><varname>AssertKernelVersion=</varname></term> 1716 <term><varname>AssertEnvironment=</varname></term> 1717 <term><varname>AssertSecurity=</varname></term> 1718 <term><varname>AssertCapability=</varname></term> 1719 <term><varname>AssertACPower=</varname></term> 1720 <term><varname>AssertNeedsUpdate=</varname></term> 1721 <term><varname>AssertFirstBoot=</varname></term> 1722 <term><varname>AssertPathExists=</varname></term> 1723 <term><varname>AssertPathExistsGlob=</varname></term> 1724 <term><varname>AssertPathIsDirectory=</varname></term> 1725 <term><varname>AssertPathIsSymbolicLink=</varname></term> 1726 <term><varname>AssertPathIsMountPoint=</varname></term> 1727 <term><varname>AssertPathIsReadWrite=</varname></term> 1728 <term><varname>AssertPathIsEncrypted=</varname></term> 1729 <term><varname>AssertDirectoryNotEmpty=</varname></term> 1730 <term><varname>AssertFileNotEmpty=</varname></term> 1731 <term><varname>AssertFileIsExecutable=</varname></term> 1732 <term><varname>AssertUser=</varname></term> 1733 <term><varname>AssertGroup=</varname></term> 1734 <term><varname>AssertControlGroupController=</varname></term> 1735 <term><varname>AssertMemory=</varname></term> 1736 <term><varname>AssertCPUs=</varname></term> 1737 <term><varname>AssertOSRelease=</varname></term> 1738 <term><varname>AssertMemoryPressure=</varname></term> 1739 <term><varname>AssertCPUPressure=</varname></term> 1740 <term><varname>AssertIOPressure=</varname></term> 1741 1742 <listitem><para>Similar to the <varname>ConditionArchitecture=</varname>, 1743 <varname>ConditionVirtualization=</varname>, …, condition settings described above, these settings 1744 add assertion checks to the start-up of the unit. However, unlike the conditions settings, any 1745 assertion setting that is not met results in failure of the start job (which means this is logged 1746 loudly). Note that hitting a configured assertion does not cause the unit to enter the 1747 <literal>failed</literal> state (or in fact result in any state change of the unit), it affects 1748 only the job queued for it. Use assertion expressions for units that cannot operate when specific 1749 requirements are not met, and when this is something the administrator or user should look 1750 into.</para> 1751 </listitem> 1752 </varlistentry> 1753 </variablelist> 1754 </refsect2> 1755 </refsect1> 1756 1757 <refsect1> 1758 <title>Mapping of unit properties to their inverses</title> 1759 1760 <para>Unit settings that create a relationship with a second unit usually show up 1761 in properties of both units, for example in <command>systemctl show</command> 1762 output. In some cases the name of the property is the same as the name of the 1763 configuration setting, but not always. This table lists the properties 1764 that are shown on two units which are connected through some dependency, and shows 1765 which property on "source" unit corresponds to which property on the "target" unit. 1766 </para> 1767 1768 <table> 1769 <title> 1770 "Forward" and "reverse" unit properties 1771 </title> 1772 1773 <tgroup cols='4'> 1774 <colspec colname='forward' /> 1775 <colspec colname='reverse' /> 1776 <colspec colname='fuse' /> 1777 <colspec colname='ruse' /> 1778 <thead> 1779 <row> 1780 <entry>"Forward" property</entry> 1781 <entry>"Reverse" property</entry> 1782 <entry namest='fuse' nameend='ruse' valign='middle'>Where used</entry> 1783 </row> 1784 </thead> 1785 <tbody> 1786 <row> 1787 <entry><varname>Before=</varname></entry> 1788 <entry><varname>After=</varname></entry> 1789 <entry morerows='1' namest='fuse' nameend='ruse' valign='middle'>[Unit] section</entry> 1790 </row> 1791 <row> 1792 <entry><varname>After=</varname></entry> 1793 <entry><varname>Before=</varname></entry> 1794 </row> 1795 <row> 1796 <entry><varname>Requires=</varname></entry> 1797 <entry><varname>RequiredBy=</varname></entry> 1798 <entry>[Unit] section</entry> 1799 <entry>[Install] section</entry> 1800 </row> 1801 <row> 1802 <entry><varname>Wants=</varname></entry> 1803 <entry><varname>WantedBy=</varname></entry> 1804 <entry>[Unit] section</entry> 1805 <entry>[Install] section</entry> 1806 </row> 1807 <row> 1808 <entry><varname>PartOf=</varname></entry> 1809 <entry><varname>ConsistsOf=</varname></entry> 1810 <entry>[Unit] section</entry> 1811 <entry>an automatic property</entry> 1812 </row> 1813 <row> 1814 <entry><varname>BindsTo=</varname></entry> 1815 <entry><varname>BoundBy=</varname></entry> 1816 <entry>[Unit] section</entry> 1817 <entry>an automatic property</entry> 1818 </row> 1819 <row> 1820 <entry><varname>Requisite=</varname></entry> 1821 <entry><varname>RequisiteOf=</varname></entry> 1822 <entry>[Unit] section</entry> 1823 <entry>an automatic property</entry> 1824 </row> 1825 <row> 1826 <entry><varname>Triggers=</varname></entry> 1827 <entry><varname>TriggeredBy=</varname></entry> 1828 <entry namest='fuse' nameend='ruse' valign='middle'>Automatic properties, see notes below</entry> 1829 </row> 1830 <row> 1831 <entry><varname>Conflicts=</varname></entry> 1832 <entry><varname>ConflictedBy=</varname></entry> 1833 <entry>[Unit] section</entry> 1834 <entry>an automatic property</entry> 1835 </row> 1836 <row> 1837 <entry><varname>PropagatesReloadTo=</varname></entry> 1838 <entry><varname>ReloadPropagatedFrom=</varname></entry> 1839 <entry morerows='1' namest='fuse' nameend='ruse' valign='middle'>[Unit] section</entry> 1840 </row> 1841 <row> 1842 <entry><varname>ReloadPropagatedFrom=</varname></entry> 1843 <entry><varname>PropagatesReloadTo=</varname></entry> 1844 </row> 1845 <row> 1846 <entry><varname>Following=</varname></entry> 1847 <entry>n/a</entry> 1848 <entry>An automatic property</entry> 1849 </row> 1850 </tbody> 1851 </tgroup> 1852 </table> 1853 1854 <para>Note: <varname>WantedBy=</varname> and <varname>RequiredBy=</varname> are 1855 used in the [Install] section to create symlinks in <filename>.wants/</filename> 1856 and <filename>.requires/</filename> directories. They cannot be used directly as a 1857 unit configuration setting.</para> 1858 1859 <para>Note: <varname>ConsistsOf=</varname>, <varname>BoundBy=</varname>, 1860 <varname>RequisiteOf=</varname>, <varname>ConflictedBy=</varname> are created 1861 implicitly along with their reverses and cannot be specified directly.</para> 1862 1863 <para>Note: <varname>Triggers=</varname> is created implicitly between a socket, 1864 path unit, or an automount unit, and the unit they activate. By default a unit 1865 with the same name is triggered, but this can be overridden using 1866 <varname>Sockets=</varname>, <varname>Service=</varname>, and <varname>Unit=</varname> 1867 settings. See 1868 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 1869 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 1870 <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 1871 and 1872 <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry> 1873 for details. <varname>TriggeredBy=</varname> is created implicitly on the 1874 triggered unit.</para> 1875 1876 <para>Note: <varname>Following=</varname> is used to group device aliases and points to the 1877 "primary" device unit that systemd is using to track device state, usually corresponding to a 1878 sysfs path. It does not show up in the "target" unit.</para> 1879 </refsect1> 1880 1881 <refsect1> 1882 <title>[Install] Section Options</title> 1883 1884 <para>Unit files may include an [Install] section, which carries installation information for 1885 the unit. This section is not interpreted by 1886 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> during runtime; it is 1887 used by the <command>enable</command> and <command>disable</command> commands of the 1888 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> tool during 1889 installation of a unit.</para> 1890 1891 <variablelist class='unit-directives'> 1892 <varlistentry> 1893 <term><varname>Alias=</varname></term> 1894 1895 <listitem><para>A space-separated list of additional names this unit shall be installed under. The names listed 1896 here must have the same suffix (i.e. type) as the unit filename. This option may be specified more than once, 1897 in which case all listed names are used. At installation time, <command>systemctl enable</command> will create 1898 symlinks from these names to the unit filename. Note that not all unit types support such alias names, and this 1899 setting is not supported for them. Specifically, mount, slice, swap, and automount units do not support 1900 aliasing.</para></listitem> 1901 </varlistentry> 1902 1903 <varlistentry> 1904 <term><varname>WantedBy=</varname></term> 1905 <term><varname>RequiredBy=</varname></term> 1906 1907 <listitem><para>This option may be used more than once, or a space-separated list of unit names may 1908 be given. A symbolic link is created in the <filename>.wants/</filename> or 1909 <filename>.requires/</filename> directory of each of the listed units when this unit is installed by 1910 <command>systemctl enable</command>. This has the effect of a dependency of type 1911 <varname>Wants=</varname> or <varname>Requires=</varname> being added from the listed unit to the 1912 current unit. The primary result is that the current unit will be started when the listed unit is 1913 started, see the description of <varname>Wants=</varname> and <varname>Requires=</varname> in the 1914 [Unit] section for details.</para> 1915 1916 <para>In case of template units listing non template units, the listing unit must have 1917 <varname>DefaultInstance=</varname> set, or <command>systemctl enable</command> must be called with 1918 an instance name. The instance (default or specified) will be added to the 1919 <filename>.wants/</filename> or <filename>.requires/</filename> list of the listed unit. For example, 1920 <command>WantedBy=getty.target</command> in a service <filename>getty@.service</filename> will result 1921 in <command>systemctl enable getty@tty2.service</command> creating a 1922 <filename>getty.target.wants/getty@tty2.service</filename> link to 1923 <filename>getty@.service</filename>. This also applies to listing specific instances of templated 1924 units: this specific instance will gain the dependency. A template unit may also list a template 1925 unit, in which case a generic dependency will be added where each instance of the listing unit will 1926 have a dependency on an instance of the listed template with the same instance value. For example, 1927 <command>WantedBy=container@.target</command> in a service <filename>monitor@.service</filename> will 1928 result in <command>systemctl enable monitor@.service</command> creating a 1929 <filename>container@.target.wants/monitor@.service</filename> link to 1930 <filename>monitor@.service</filename>, which applies to all instances of 1931 <filename>container@.target</filename>.</para></listitem> 1932 </varlistentry> 1933 1934 <varlistentry> 1935 <term><varname>Also=</varname></term> 1936 1937 <listitem><para>Additional units to install/deinstall when 1938 this unit is installed/deinstalled. If the user requests 1939 installation/deinstallation of a unit with this option 1940 configured, <command>systemctl enable</command> and 1941 <command>systemctl disable</command> will automatically 1942 install/uninstall units listed in this option as well.</para> 1943 1944 <para>This option may be used more than once, or a 1945 space-separated list of unit names may be 1946 given.</para></listitem> 1947 </varlistentry> 1948 1949 <varlistentry> 1950 <term><varname>DefaultInstance=</varname></term> 1951 1952 <listitem><para>In template unit files, this specifies for 1953 which instance the unit shall be enabled if the template is 1954 enabled without any explicitly set instance. This option has 1955 no effect in non-template unit files. The specified string 1956 must be usable as instance identifier.</para></listitem> 1957 </varlistentry> 1958 </variablelist> 1959 1960 <para>The following specifiers are interpreted in the Install section: 1961 %a, %b, %B, %g, %G, %H, %i, %j, %l, %m, %n, %N, %o, %p, %u, %U, %v, %w, %W, %%. 1962 For their meaning see the next section.</para> 1963 </refsect1> 1964 1965 <refsect1> 1966 <title>Specifiers</title> 1967 1968 <para>Many settings resolve specifiers which may be used to write 1969 generic unit files referring to runtime or unit parameters that 1970 are replaced when the unit files are loaded. Specifiers must be known 1971 and resolvable for the setting to be valid. The following 1972 specifiers are understood:</para> 1973 1974 <table class='specifiers'> 1975 <title>Specifiers available in unit files</title> 1976 <tgroup cols='3' align='left' colsep='1' rowsep='1'> 1977 <colspec colname="spec" /> 1978 <colspec colname="mean" /> 1979 <colspec colname="detail" /> 1980 <thead> 1981 <row> 1982 <entry>Specifier</entry> 1983 <entry>Meaning</entry> 1984 <entry>Details</entry> 1985 </row> 1986 </thead> 1987 <tbody> 1988 <row> 1989 <!-- We do not use the common definition from standard-specifiers.xml here since it includes a 1990 reference onto our own man page, which would make the rendered version self-referential. --> 1991 <entry><literal>%a</literal></entry> 1992 <entry>Architecture</entry> 1993 <entry>A short string identifying the architecture of the local system. A string such as <constant>x86</constant>, <constant>x86-64</constant> or <constant>arm64</constant>. See the architectures defined for <varname>ConditionArchitecture=</varname> above for a full list.</entry> 1994 </row> 1995 <xi:include href="standard-specifiers.xml" xpointer="A"/> 1996 <xi:include href="standard-specifiers.xml" xpointer="b"/> 1997 <xi:include href="standard-specifiers.xml" xpointer="B"/> 1998 <row> 1999 <entry><literal>%C</literal></entry> 2000 <entry>Cache directory root</entry> 2001 <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> 2002 </row> 2003 <row> 2004 <entry><literal>%d</literal></entry> 2005 <entry>Credentials directory</entry> 2006 <entry>This is the value of the <literal>$CREDENTIALS_DIRECTORY</literal> environment variable if available. See section "Credentials" in <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> for more information.</entry> 2007 </row> 2008 <row> 2009 <entry><literal>%E</literal></entry> 2010 <entry>Configuration directory root</entry> 2011 <entry>This is either <filename>/etc/</filename> (for the system manager) or the path <literal>$XDG_CONFIG_HOME</literal> resolves to (for user managers).</entry> 2012 </row> 2013 <row> 2014 <entry><literal>%f</literal></entry> 2015 <entry>Unescaped filename</entry> 2016 <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> 2017 </row> 2018 <row> 2019 <entry><literal>%g</literal></entry> 2020 <entry>User group</entry> 2021 <entry>This is the name of the group running the service manager instance. In case of the system manager this resolves to <literal>root</literal>.</entry> 2022 </row> 2023 <row> 2024 <entry><literal>%G</literal></entry> 2025 <entry>User GID</entry> 2026 <entry>This is the numeric GID of the user running the service manager instance. In case of the system manager this resolves to <literal>0</literal>.</entry> 2027 </row> 2028 <row> 2029 <entry><literal>%h</literal></entry> 2030 <entry>User home directory</entry> 2031 <entry>This is the home directory of the <emphasis>user running the service manager instance</emphasis>. In case of the system manager this resolves to <literal>/root</literal>. 2032 2033Note that this setting is <emphasis>not</emphasis> influenced by the <varname>User=</varname> setting configurable in the [Service] section of the service unit.</entry> 2034 </row> 2035 <row> 2036 <!-- We do not use the common definition from standard-specifiers.xml here since we want a 2037 slightly more verbose explanation here, referring to the reload cycle. --> 2038 <entry><literal>%H</literal></entry> 2039 <entry>Host name</entry> 2040 <entry>The hostname of the running system at the point in time the unit configuration is loaded.</entry> 2041 </row> 2042 <row> 2043 <entry><literal>%i</literal></entry> 2044 <entry>Instance name</entry> 2045 <entry>For instantiated units this is the string between the first <literal>@</literal> character and the type suffix. Empty for non-instantiated units.</entry> 2046 </row> 2047 <row> 2048 <entry><literal>%I</literal></entry> 2049 <entry>Unescaped instance name</entry> 2050 <entry>Same as <literal>%i</literal>, but with escaping undone.</entry> 2051 </row> 2052 <row> 2053 <entry><literal>%j</literal></entry> 2054 <entry>Final component of the prefix</entry> 2055 <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> 2056 </row> 2057 <row> 2058 <entry><literal>%J</literal></entry> 2059 <entry>Unescaped final component of the prefix</entry> 2060 <entry>Same as <literal>%j</literal>, but with escaping undone.</entry> 2061 </row> 2062 <row> 2063 <entry><literal>%l</literal></entry> 2064 <!-- We do not use the common definition from standard-specifiers.xml here since we want a 2065 slightly more verbose explanation here, referring to the reload cycle. --> 2066 <entry>Short host name</entry> 2067 <entry>The hostname of the running system at the point in time the unit configuration is loaded, truncated at the first dot to remove any domain component.</entry> 2068 </row> 2069 <row> 2070 <entry><literal>%L</literal></entry> 2071 <entry>Log directory root</entry> 2072 <entry>This is either <filename>/var/log</filename> (for the system manager) or the path <literal>$XDG_CONFIG_HOME</literal> resolves to with <filename index="false">/log</filename> appended (for user managers).</entry> 2073 </row> 2074 <xi:include href="standard-specifiers.xml" xpointer="m"/> 2075 <xi:include href="standard-specifiers.xml" xpointer="M"/> 2076 <row> 2077 <entry><literal>%n</literal></entry> 2078 <entry>Full unit name</entry> 2079 <entry></entry> 2080 </row> 2081 <row> 2082 <entry><literal>%N</literal></entry> 2083 <entry>Full unit name</entry> 2084 <entry>Same as <literal>%n</literal>, but with the type suffix removed.</entry> 2085 </row> 2086 <xi:include href="standard-specifiers.xml" xpointer="o"/> 2087 <row> 2088 <entry><literal>%p</literal></entry> 2089 <entry>Prefix name</entry> 2090 <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> 2091 </row> 2092 <row> 2093 <entry><literal>%P</literal></entry> 2094 <entry>Unescaped prefix name</entry> 2095 <entry>Same as <literal>%p</literal>, but with escaping undone.</entry> 2096 </row> 2097 <row> 2098 <!-- We do not use the common definition from standard-specifiers.xml here since we want a 2099 slightly more verbose explanation here, referring to the reload cycle. --> 2100 <entry><literal>%q</literal></entry> 2101 <entry>Pretty host name</entry> 2102 <entry>The pretty hostname of the running system at the point in time the unit configuration is loaded, as read from the <varname>PRETTY_HOSTNAME=</varname> field of <filename>/etc/machine-info</filename>. If not set, resolves to the short hostname. See <citerefentry><refentrytitle>machine-info</refentrytitle><manvolnum>5</manvolnum></citerefentry> for more information.</entry> 2103 </row> 2104 <row> 2105 <entry><literal>%s</literal></entry> 2106 <entry>User shell</entry> 2107 <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> 2108 </row> 2109 <row> 2110 <entry><literal>%S</literal></entry> 2111 <entry>State directory root</entry> 2112 <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> 2113 </row> 2114 <row> 2115 <entry><literal>%t</literal></entry> 2116 <entry>Runtime directory root</entry> 2117 <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> 2118 </row> 2119 <xi:include href="standard-specifiers.xml" xpointer="T"/> 2120 <row> 2121 <entry><literal>%u</literal></entry> 2122 <entry>User name</entry> 2123 <entry>This is the name of the <emphasis>user running the service manager instance</emphasis>. In case of the system manager this resolves to <literal>root</literal>. 2124 2125Note that this setting is <emphasis>not</emphasis> influenced by the <varname>User=</varname> setting configurable in the [Service] section of the service unit.</entry> 2126 </row> 2127 <row> 2128 <entry><literal>%U</literal></entry> 2129 <entry>User UID</entry> 2130 <entry>This is the numeric UID of the <emphasis>user running the service manager instance</emphasis>. In case of the system manager this resolves to <literal>0</literal>. 2131 2132Note that this setting is <emphasis>not</emphasis> influenced by the <varname>User=</varname> setting configurable in the [Service] section of the service unit.</entry> 2133 </row> 2134 <xi:include href="standard-specifiers.xml" xpointer="v"/> 2135 <xi:include href="standard-specifiers.xml" xpointer="V"/> 2136 <xi:include href="standard-specifiers.xml" xpointer="w"/> 2137 <xi:include href="standard-specifiers.xml" xpointer="W"/> 2138 <row> 2139 <entry><literal>%y</literal></entry> 2140 <entry>The path to the fragment</entry> 2141 <entry>This is the path where the main part of the unit file is located. For linked unit files, the real path outside of the unit search directories is used. For units that don't have a fragment file, this specifier will raise an error.</entry> 2142 </row> 2143 <row> 2144 <entry><literal>%Y</literal></entry> 2145 <entry>The directory of the fragment</entry> 2146 <entry>This is the directory part of <literal>%y</literal>.</entry> 2147 </row> 2148 <xi:include href="standard-specifiers.xml" xpointer="percent"/> 2149 </tbody> 2150 </tgroup> 2151 </table> 2152 </refsect1> 2153 2154 <refsect1> 2155 <title>Examples</title> 2156 2157 <example> 2158 <title>Allowing units to be enabled</title> 2159 2160 <para>The following snippet (highlighted) allows a unit (e.g. 2161 <filename>foo.service</filename>) to be enabled via 2162 <command>systemctl enable</command>:</para> 2163 2164 <programlisting>[Unit] 2165Description=Foo 2166 2167[Service] 2168ExecStart=/usr/sbin/foo-daemon 2169 2170<emphasis>[Install]</emphasis> 2171<emphasis>WantedBy=multi-user.target</emphasis></programlisting> 2172 2173 <para>After running <command>systemctl enable</command>, a 2174 symlink 2175 <filename index="false">/etc/systemd/system/multi-user.target.wants/foo.service</filename> 2176 linking to the actual unit will be created. It tells systemd to 2177 pull in the unit when starting 2178 <filename>multi-user.target</filename>. The inverse 2179 <command>systemctl disable</command> will remove that symlink 2180 again.</para> 2181 </example> 2182 2183 <example> 2184 <title>Overriding vendor settings</title> 2185 2186 <para>There are two methods of overriding vendor settings in 2187 unit files: copying the unit file from 2188 <filename>/usr/lib/systemd/system</filename> to 2189 <filename>/etc/systemd/system</filename> and modifying the 2190 chosen settings. Alternatively, one can create a directory named 2191 <filename><replaceable>unit</replaceable>.d/</filename> within 2192 <filename>/etc/systemd/system</filename> and place a drop-in 2193 file <filename><replaceable>name</replaceable>.conf</filename> 2194 there that only changes the specific settings one is interested 2195 in. Note that multiple such drop-in files are read if 2196 present, processed in lexicographic order of their filename.</para> 2197 2198 <para>The advantage of the first method is that one easily 2199 overrides the complete unit, the vendor unit is not parsed at 2200 all anymore. It has the disadvantage that improvements to the 2201 unit file by the vendor are not automatically incorporated on 2202 updates.</para> 2203 2204 <para>The advantage of the second method is that one only 2205 overrides the settings one specifically wants, where updates to 2206 the unit by the vendor automatically apply. This has the 2207 disadvantage that some future updates by the vendor might be 2208 incompatible with the local changes.</para> 2209 2210 <para>This also applies for user instances of systemd, but with 2211 different locations for the unit files. See the section on unit 2212 load paths for further details.</para> 2213 2214 <para>Suppose there is a vendor-supplied unit 2215 <filename>/usr/lib/systemd/system/httpd.service</filename> with 2216 the following contents:</para> 2217 2218 <programlisting>[Unit] 2219Description=Some HTTP server 2220After=remote-fs.target sqldb.service 2221Requires=sqldb.service 2222AssertPathExists=/srv/webserver 2223 2224[Service] 2225Type=notify 2226ExecStart=/usr/sbin/some-fancy-httpd-server 2227Nice=5 2228 2229[Install] 2230WantedBy=multi-user.target</programlisting> 2231 2232 <para>Now one wants to change some settings as an administrator: 2233 firstly, in the local setup, <filename>/srv/webserver</filename> 2234 might not exist, because the HTTP server is configured to use 2235 <filename>/srv/www</filename> instead. Secondly, the local 2236 configuration makes the HTTP server also depend on a memory 2237 cache service, <filename>memcached.service</filename>, that 2238 should be pulled in (<varname>Requires=</varname>) and also be 2239 ordered appropriately (<varname>After=</varname>). Thirdly, in 2240 order to harden the service a bit more, the administrator would 2241 like to set the <varname>PrivateTmp=</varname> setting (see 2242 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry> 2243 for details). And lastly, the administrator would like to reset 2244 the niceness of the service to its default value of 0.</para> 2245 2246 <para>The first possibility is to copy the unit file to 2247 <filename>/etc/systemd/system/httpd.service</filename> and 2248 change the chosen settings:</para> 2249 2250 <programlisting>[Unit] 2251Description=Some HTTP server 2252After=remote-fs.target sqldb.service <emphasis>memcached.service</emphasis> 2253Requires=sqldb.service <emphasis>memcached.service</emphasis> 2254AssertPathExists=<emphasis>/srv/www</emphasis> 2255 2256[Service] 2257Type=notify 2258ExecStart=/usr/sbin/some-fancy-httpd-server 2259<emphasis>Nice=0</emphasis> 2260<emphasis>PrivateTmp=yes</emphasis> 2261 2262[Install] 2263WantedBy=multi-user.target</programlisting> 2264 2265 <para>Alternatively, the administrator could create a drop-in 2266 file 2267 <filename>/etc/systemd/system/httpd.service.d/local.conf</filename> 2268 with the following contents:</para> 2269 2270 <programlisting>[Unit] 2271After=memcached.service 2272Requires=memcached.service 2273# Reset all assertions and then re-add the condition we want 2274AssertPathExists= 2275AssertPathExists=/srv/www 2276 2277[Service] 2278Nice=0 2279PrivateTmp=yes</programlisting> 2280 2281 <para>Note that for drop-in files, if one wants to remove 2282 entries from a setting that is parsed as a list (and is not a 2283 dependency), such as <varname>AssertPathExists=</varname> (or 2284 e.g. <varname>ExecStart=</varname> in service units), one needs 2285 to first clear the list before re-adding all entries except the 2286 one that is to be removed. Dependencies (<varname>After=</varname>, etc.) 2287 cannot be reset to an empty list, so dependencies can only be 2288 added in drop-ins. If you want to remove dependencies, you have 2289 to override the entire unit.</para> 2290 2291 </example> 2292 2293 <example> 2294 <title>Top level drop-ins with template units</title> 2295 2296 <para>Top level per-type drop-ins can be used to change some aspect of 2297 all units of a particular type. For example by creating the 2298 <filename index='false'>/etc/systemd/system/service.d/</filename> 2299 directory with a drop-in file, the contents of the drop-in file can be 2300 applied to all service units. We can take this further by having the 2301 top-level drop-in instantiate a secondary helper unit. Consider for 2302 example the following set of units and drop-in files where we install 2303 an <varname>OnFailure=</varname> dependency for all service units.</para> 2304 2305 <para> 2306 <filename index='false'>/etc/systemd/system/failure-handler@.service</filename>:</para> 2307 2308 <programlisting>[Unit] 2309Description=My failure handler for %i 2310 2311[Service] 2312Type=oneshot 2313# Perform some special action for when %i exits unexpectedly. 2314ExecStart=/usr/sbin/myfailurehandler %i 2315 </programlisting> 2316 2317 <para>We can then add an instance of 2318 <filename index='false'>failure-handler@.service</filename> as an 2319 <varname>OnFailure=</varname> dependency for all service units.</para> 2320 2321 <para> 2322 <filename index='false'>/etc/systemd/system/service.d/10-all.conf</filename>:</para> 2323 2324 <programlisting>[Unit] 2325OnFailure=failure-handler@%N.service 2326 </programlisting> 2327 2328 <para>Now, after running <command>systemctl daemon-reload</command> all 2329 services will have acquired an <varname>OnFailure=</varname> dependency on 2330 <filename index='false'>failure-handler@%N.service</filename>. The 2331 template instance units will also have gained the dependency which results 2332 in the creation of a recursive dependency chain. systemd will try to detect 2333 these recursive dependency chains where a template unit directly and 2334 recursively depends on itself and will remove such dependencies 2335 automatically if it finds them. If systemd doesn't detect the recursive 2336 dependency chain, we can break the chain ourselves by disabling the drop-in 2337 for the template instance units via a symlink to 2338 <filename index='false'>/dev/null</filename>:</para> 2339 2340 <programlisting> 2341<command>mkdir /etc/systemd/system/failure-handler@.service.d/</command> 2342<command>ln -s /dev/null /etc/systemd/system/failure-handler@.service.d/10-all.conf</command> 2343<command>systemctl daemon-reload</command> 2344 </programlisting> 2345 2346 <para>This ensures that if a <filename index='false'>failure-handler@.service</filename> instance fails it will not trigger an instance named 2347 <filename index='false'>failure-handler@failure-handler.service</filename>.</para> 2348 2349 </example> 2350 2351 </refsect1> 2352 2353 <refsect1> 2354 <title>See Also</title> 2355 <para> 2356 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 2357 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 2358 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2359 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>, 2360 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2361 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2362 <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2363 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2364 <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2365 <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2366 <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2367 <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2368 <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2369 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2370 <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>, 2371 <citerefentry><refentrytitle>systemd.time</refentrytitle><manvolnum>7</manvolnum></citerefentry>, 2372 <citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 2373 <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>, 2374 <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>, 2375 <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>1</manvolnum></citerefentry> 2376 </para> 2377 </refsect1> 2378 2379</refentry> 2380