2010-07-02 08:55:34 +08:00
|
|
|
<?xml version='1.0'?> <!--*-nxml-*-->
|
|
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
2015-06-19 01:47:44 +08:00
|
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
2010-07-02 08:55:34 +08:00
|
|
|
|
|
|
|
<!--
|
|
|
|
This file is part of systemd.
|
|
|
|
|
|
|
|
Copyright 2010 Lennart Poettering
|
|
|
|
|
|
|
|
systemd is free software; you can redistribute it and/or modify it
|
2012-04-12 06:20:58 +08:00
|
|
|
under the terms of the GNU Lesser General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2.1 of the License, or
|
2010-07-02 08:55:34 +08:00
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
systemd is distributed in the hope that it will be useful, but
|
|
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2012-04-12 06:20:58 +08:00
|
|
|
Lesser General Public License for more details.
|
2010-07-02 08:55:34 +08:00
|
|
|
|
2012-04-12 06:20:58 +08:00
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
2010-07-02 08:55:34 +08:00
|
|
|
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
-->
|
|
|
|
|
|
|
|
<refentry id="systemd.target">
|
2015-02-04 10:14:13 +08:00
|
|
|
<refentryinfo>
|
|
|
|
<title>systemd.target</title>
|
|
|
|
<productname>systemd</productname>
|
|
|
|
|
|
|
|
<authorgroup>
|
|
|
|
<author>
|
|
|
|
<contrib>Developer</contrib>
|
|
|
|
<firstname>Lennart</firstname>
|
|
|
|
<surname>Poettering</surname>
|
|
|
|
<email>lennart@poettering.net</email>
|
|
|
|
</author>
|
|
|
|
</authorgroup>
|
|
|
|
</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>
|
2015-11-12 03:47:07 +08:00
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1>
|
2017-09-12 12:02:27 +08:00
|
|
|
<title>Implicit Dependencies</title>
|
2016-07-15 10:20:45 +08:00
|
|
|
|
2017-09-12 12:02:27 +08:00
|
|
|
<para>There are no implicit dependencies for target units.</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
<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
|
2017-10-18 14:30:35 +08:00
|
|
|
<varname>After=</varname> unless <varname>DefaultDependencies=no</varname>
|
|
|
|
is set in the specified units. Note that <varname>Wants=</varname> or
|
2017-09-12 12:02:27 +08:00
|
|
|
<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>
|
|
|
|
dependency against <filename>shutdown.target</filename>.</para></listitem>
|
|
|
|
</itemizedlist>
|
2015-02-04 10:14:13 +08:00
|
|
|
</refsect1>
|
|
|
|
|
2017-06-27 15:50:28 +08: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 10:14:13 +08: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 08:55:34 +08:00
|
|
|
|
|
|
|
</refentry>
|