mirror of
https://github.com/systemd/systemd
synced 2024-11-02 19:41:12 +00:00
e52f929574
The man page is reference documentation, so we shouldn't write too much duplicate things here, but we can make the text a bit more approachable. This rewords and extends the documentation as requested and suggested in #24231 and adds some hints for the user. Closes #24231.
150 lines
6.9 KiB
XML
150 lines
6.9 KiB
XML
<?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. Target units are used to group units and to set synchronization points for
|
|
ordering dependencies with other unit files.</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 merely group units, allowing a single target name to be used in <varname>Wants=</varname>
|
|
and <varname>Requires=</varname> settings to establish a dependency on a set of units defined by the
|
|
target, and in <varname>Before=</varname> and <varname>After=</varname> settings to establish ordering.
|
|
Targets establish standardized names for synchronization points during boot and shutdown. Importantly,
|
|
see <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
|
|
for examples and descriptions of standard systemd targets.</para>
|
|
|
|
<para>Target units provide a more flexible replacement for SysV runlevels in the classic SysV init
|
|
system. 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>
|
|
|
|
<para>Note that a target unit file must not be empty, lest it be considered a masked unit. It is
|
|
recommended to provide a [Unit] section which includes informative <varname>Description=</varname> and
|
|
<varname>Documentation=</varname> options.</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.</para>
|
|
|
|
<para>Note that the reverse is not true. For example, defining <option>Wants=that.target</option> in
|
|
<filename index='false'>some.service</filename> will not automatically add the
|
|
<option>After=that.target</option> ordering dependency for <filename>some.service</filename>.
|
|
Instead, <filename>some.service</filename> should use the primary synchronization function of target
|
|
type units, by setting a specific <option>After=that.target</option> or
|
|
<option>Before=that.target</option> ordering dependency in its .service unit file.
|
|
</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>Options</title>
|
|
|
|
<para>Target unit files may include [Unit] and [Install] sections, which are described in
|
|
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
|
No options specific to this file type are supported.</para>
|
|
</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>
|