| <?xml version='1.0'?> <!--*-nxml-*--> |
| <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" |
| "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> |
| <!-- SPDX-License-Identifier: LGPL-2.1-or-later --> |
| |
| <refentry id="systemd.target"> |
| <refentryinfo> |
| <title>systemd.target</title> |
| <productname>systemd</productname> |
| </refentryinfo> |
| |
| <refmeta> |
| <refentrytitle>systemd.target</refentrytitle> |
| <manvolnum>5</manvolnum> |
| </refmeta> |
| |
| <refnamediv> |
| <refname>systemd.target</refname> |
| <refpurpose>Target unit configuration</refpurpose> |
| </refnamediv> |
| |
| <refsynopsisdiv> |
| <para><filename><replaceable>target</replaceable>.target</filename></para> |
| </refsynopsisdiv> |
| |
| <refsect1> |
| <title>Description</title> |
| |
| <para>A unit configuration file whose name ends in |
| <literal>.target</literal> encodes information about a target unit |
| of systemd, which is used for grouping units and as well-known |
| synchronization points during start-up.</para> |
| |
| <para>This unit type has no specific options. See |
| <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry> |
| for the common options of all unit configuration files. The common |
| configuration items are configured in the generic [Unit] and |
| [Install] sections. A separate [Target] section does not exist, |
| since no target-specific options may be configured.</para> |
| |
| <para>Target units do not offer any additional functionality on |
| top of the generic functionality provided by units. They exist |
| merely to group units via dependencies (useful as boot targets), |
| and to establish standardized names for synchronization points |
| used in dependencies between units. Among other things, target |
| units are a more flexible replacement for SysV runlevels in the |
| classic SysV init system. (And for compatibility reasons special |
| target units such as <filename>runlevel3.target</filename> exist |
| which are used by the SysV runlevel compatibility code in systemd. |
| See |
| <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry> |
| for details).</para> |
| </refsect1> |
| |
| <refsect1> |
| <title>Automatic Dependencies</title> |
| |
| <refsect2> |
| <title>Implicit Dependencies</title> |
| |
| <para>There are no implicit dependencies for target units.</para> |
| </refsect2> |
| |
| <refsect2> |
| <title>Default Dependencies</title> |
| |
| <para>The following dependencies are added unless |
| <varname>DefaultDependencies=no</varname> is set:</para> |
| |
| <itemizedlist> |
| <listitem><para>Target units will automatically complement all |
| configured dependencies of type <varname>Wants=</varname> or |
| <varname>Requires=</varname> with dependencies of type |
| <varname>After=</varname> unless <varname>DefaultDependencies=no</varname> |
| is set in the specified units. Note that <varname>Wants=</varname> or |
| <varname>Requires=</varname> must be defined in the target unit itself — if |
| you for example define <varname>Wants=</varname>some.target in |
| some.service, the automatic ordering will not be added.</para></listitem> |
| |
| <listitem><para>Target units automatically gain <varname>Conflicts=</varname> |
| and <varname>Before=</varname> dependencies against |
| <filename>shutdown.target</filename>.</para></listitem> |
| </itemizedlist> |
| </refsect2> |
| </refsect1> |
| |
| <refsect1> |
| <title>Example</title> |
| |
| <example> |
| <title>Simple standalone target</title> |
| |
| <programlisting># emergency-net.target |
| |
| [Unit] |
| Description=Emergency Mode with Networking |
| Requires=emergency.target systemd-networkd.service |
| After=emergency.target systemd-networkd.service |
| AllowIsolate=yes</programlisting> |
| |
| <para>When adding dependencies to other units, it's important to check if they set |
| <varname>DefaultDependencies=</varname>. Service units, unless they set |
| <varname>DefaultDependencies=no</varname>, automatically get a dependency on |
| <filename>sysinit.target</filename>. In this case, both |
| <filename>emergency.target</filename> and <filename>systemd-networkd.service</filename> |
| have <varname>DefaultDependencies=no</varname>, so they are suitable for use |
| in this target, and do not pull in <filename>sysinit.target</filename>.</para> |
| |
| <para>You can now switch into this emergency mode by running <varname>systemctl |
| isolate emergency-net.target</varname> or by passing the option |
| <varname>systemd.unit=emergency-net.target</varname> on the kernel command |
| line.</para> |
| |
| <para>Other units can have <varname>WantedBy=emergency-net.target</varname> in the |
| <varname>[Install]</varname> section. After they are enabled using |
| <command>systemctl enable</command>, they will be started before |
| <varname>emergency-net.target</varname> is started. It is also possible to add |
| arbitrary units as dependencies of <filename>emergency.target</filename> without |
| modifying them by using <command>systemctl add-wants</command>. |
| </para> |
| </example> |
| </refsect1> |
| |
| <refsect1> |
| <title>See Also</title> |
| <para> |
| <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry> |
| </para> |
| </refsect1> |
| |
| </refentry> |