2010-07-02 04:55:34 +04:00
<?xml version='1.0'?> <!-- * - nxml - * -->
2019-03-14 16:40:58 +03:00
< !DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
2015-06-18 20:47:44 +03:00
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
2020-11-09 07:23:58 +03:00
<!-- SPDX - License - Identifier: LGPL - 2.1 - or - later -->
2010-07-02 04:55:34 +04:00
<refentry id= "systemd.target" >
2015-02-04 05:14:13 +03:00
<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>
2023-05-30 14:35:18 +03:00
<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>
2015-02-04 05:14:13 +03:00
<para > This unit type has no specific options. See
2023-05-30 14:35:18 +03:00
<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>
2015-11-11 22:47:07 +03:00
</refsect1>
<refsect1 >
2018-04-16 19:00:33 +03:00
<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 >
2023-05-30 14:35:18 +03:00
<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>
2018-04-16 19:00:33 +03:00
<listitem > <para > Target units automatically gain <varname > Conflicts=</varname>
2018-07-13 15:55:17 +03:00
and <varname > Before=</varname> dependencies against
<filename > shutdown.target</filename> .</para> </listitem>
2018-04-16 19:00:33 +03:00
</itemizedlist>
</refsect2>
2015-02-04 05:14:13 +03:00
</refsect1>
2021-09-27 10:09:30 +03:00
<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>
2017-06-27 10:50:28 +03:00
<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>
2015-02-04 05:14:13 +03:00
<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>
2010-07-02 04:55:34 +04:00
</refentry>