introspect and control the state of the
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
system and service manager.</para>
-
- <para>For unit commands, the <replaceable>NAME</replaceable> represents full name of the unit.
- <programlisting>
-systemctl start foo.service
- </programlisting>
- For unit file commands, the <replaceable>NAME</replaceable> represents the full name of the unit file, or the absolute path to the unit file.
- <programlisting>
-systemctl start /path/to/foo.service
- </programlisting>
- While working with services/service files, <command>systemctl</command> implicitly appends the ".service" suffix when it is missing.
- <programlisting>
-systemctl start foo
- </programlisting></para>
</refsect1>
<refsect1>
</listitem>
</varlistentry>
- <varlistentry>
- <term><option>--fail</option></term>
-
- <listitem>
- <para>If the requested operation conflicts with a pending
- unfinished job, fail the command. If this is not specified,
- the requested operation will replace the pending job, if
- necessary. Do not confuse with
- <option>--failed</option>.</para>
- </listitem>
- </varlistentry>
-
<varlistentry>
<term><option>--show-types</option></term>
</varlistentry>
<varlistentry>
- <term><option>--irreversible</option></term>
+ <term><option>--job-mode=</option></term>
<listitem>
- <para>Mark this transaction's jobs as irreversible. This prevents
- future conflicting transactions from replacing these jobs.
- The jobs can still be cancelled using the <command>cancel</command>
- command.</para>
+ <para>When queuing a new job, control how to deal with already
+ queued jobs. Takes one of <literal>fail</literal>,
+ <literal>replace</literal>,
+ <literal>replace-irreversibly</literal>,
+ <literal>isolate</literal>,
+ <literal>ignore-dependencies</literal>,
+ <literal>ignore-requirements</literal> or
+ <literal>flush</literal>. Defaults to
+ <literal>replace</literal>, except when the
+ <command>isolate</command> command is used which implies the
+ <literal>isolate</literal> job mode.</para>
+
+ <para>If <literal>fail</literal> is specified and a requested
+ operation conflicts with a pending job (more specifically:
+ causes an already pending start job to be reversed into a stop
+ job or vice versa), cause the operation to fail.</para>
+
+ <para>If <literal>replace</literal> (the default) is
+ specified, any conflicting pending job will be replaced, as
+ necessary.</para>
+
+ <para>If <literal>replace-irreversibly</literal> is specified,
+ operate like <literal>replace</literal>, but also mark the new
+ jobs as irreversible. This prevents future conflicting
+ transactions from replacing these jobs. The jobs can still be
+ cancelled using the <command>cancel</command> command.</para>
+
+ <para><literal>isolate</literal> is only valid for start
+ operations and causes all other units to be stopped when the
+ specified unit is started. This mode is always used when the
+ <command>isolate</command> command is used.</para>
+
+ <para><literal>flush</literal> will cause all queued jobs to
+ be canceled when the new job is enqueued.</para>
+
+ <para>If <literal>ignore-dependencies</literal> is specified,
+ then all unit dependencies are ignored for this new job and
+ the operation is executed immediately. If passed, no required
+ units of the unit passed will be pulled in, and no ordering
+ dependencies will be honored. This is mostly a debugging and
+ rescue tool for the administrator and should not be used by
+ applications.</para>
+
+ <para><literal>ignore-requirements</literal> is similar to
+ <literal>ignore-dependencies</literal> but only causes the
+ requirement dependencies to be ignored, the ordering
+ dependencies will still be honoured.</para>
</listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--ignore-dependencies</option></term>
-
- <listitem>
- <para>When enqueuing a new job, ignore all its dependencies
- and execute it immediately. If passed, no required units of
- the unit passed will be pulled in, and no ordering
- dependencies will be honored. This is mostly a debugging and
- rescue tool for the administrator and should not be used by
- applications.</para>
- </listitem>
</varlistentry>
<varlistentry>
<listitem>
<para>When used with <command>enable</command>,
- <command>disable</command>, <command>is-enabled</command>
+ <command>disable</command>,
(and related commands), make changes only temporarily, so
that they are lost on the next reboot. This will have the
effect that changes are not made in subdirectories of
<variablelist>
<varlistentry>
- <term><command>list-units</command></term>
+ <term><command>list-units <optional><replaceable>PATTERN</replaceable>...</optional></command></term>
<listitem>
<para>List known units (subject to limitations specified
- with <option>-t</option>).</para>
+ with <option>-t</option>). If one or more
+ <replaceable>PATTERN</replaceable>s are specified, only
+ units matching one of them are shown.</para>
<para>This is the default command.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><command>list-sockets</command></term>
+ <term><command>list-sockets <optional><replaceable>PATTERN</replaceable>...</optional></command></term>
<listitem>
- <para>List socket units ordered by the listening address. Produces output
- similar to
+ <para>List socket units ordered by the listening address.
+ If one or more <replaceable>PATTERN</replaceable>s are
+ specified, only socket units matching one of them are
+ shown. Produces output similar to
<programlisting>
LISTEN UNIT ACTIVATES
/dev/initctl systemd-initctl.socket systemd-initctl.service
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><command>list-timers <optional><replaceable>PATTERN</replaceable>...</optional></command></term>
+
+ <listitem>
+ <para>List timer units ordered by the time they elapse
+ next. If one or more <replaceable>PATTERN</replaceable>s
+ are specified, only units matching one of them are shown.
+ </para>
+
+ <para>See also the options <option>--all</option> and
+ <option>--failed</option>.</para>
+ </listitem>
+ </varlistentry>
+
<varlistentry>
<term><command>start <replaceable>NAME</replaceable>...</command></term>
</listitem>
</varlistentry>
<varlistentry>
- <term><command>status [<replaceable>NAME</replaceable>...|<replaceable>PID</replaceable>...]</command></term>
+ <term><command>status</command> <optional><replaceable>NAME</replaceable>...|<replaceable>PID</replaceable>...]</optional></term>
<listitem>
<para>Show terse runtime status information about one or
</listitem>
</varlistentry>
<varlistentry>
- <term><command>show [<replaceable>NAME</replaceable>...|<replaceable>JOB</replaceable>...]</command></term>
+ <term><command>show</command> <optional><replaceable>NAME</replaceable>...|<replaceable>JOB</replaceable>...</optional></term>
<listitem>
<para>Show properties of one or more units, jobs, or the
human-readable output.</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><command>cat <replaceable>NAME</replaceable>...</command></term>
+ <listitem>
+ <para>Show backing files of one or more units. Prints the
+ "fragment" and "drop-ins" (source files) of units. Each
+ file is preceded by a comment which includes the file
+ name.</para>
+ </listitem>
+ </varlistentry>
<varlistentry>
<term><command>set-property <replaceable>NAME</replaceable> <replaceable>ASSIGNMENT</replaceable>...</command></term>
<variablelist>
<varlistentry>
- <term><command>list-unit-files</command></term>
+ <term><command>list-unit-files <optional><replaceable>PATTERN...</replaceable></optional></command></term>
<listitem>
- <para>List installed unit files.</para>
+ <para>List installed unit files. If one or more
+ <replaceable>PATTERN</replaceable>s are specified, only
+ units whose filename (just the last component of the path)
+ matches one of them are shown.</para>
</listitem>
</varlistentry>
<listitem>
<para>Checks whether any of the specified unit files are
- enabled (as with <command>enable</command>). Returns an exit
- code of 0 if at least one is enabled, non-zero
- otherwise. Prints the current enable status. To suppress
- this output, use <option>--quiet</option>.</para>
+ enabled (as with <command>enable</command>). Returns an
+ exit code of 0 if at least one is enabled, non-zero
+ otherwise. Prints the current enable status (see table).
+ To suppress this output, use <option>--quiet</option>.
+ </para>
+
+ <table>
+ <title>
+ <command>is-enabled</command> output
+ </title>
+
+ <tgroup cols='3'>
+ <thead>
+ <row>
+ <entry>Printed string</entry>
+ <entry>Meaning</entry>
+ <entry>Return value</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>enabled</literal></entry>
+ <entry morerows='1'>Enabled through a symlink in <filename>.wants</filename> directory (permanently or just in <filename>/run</filename>)</entry>
+ <entry morerows='1'>0</entry>
+ </row>
+ <row>
+ <entry><literal>enabled-runtime</literal></entry>
+ </row>
+ <row>
+ <entry><literal>linked</literal></entry>
+ <entry morerows='1'>Made available through a symlink to the unit file (permanently or just in <filename>/run</filename>)</entry>
+ <entry morerows='1'>1</entry>
+ </row>
+ <row>
+ <entry><literal>linked-runtime</literal></entry>
+ </row>
+ <row>
+ <entry><literal>masked</literal></entry>
+ <entry morerows='1'>Disabled entirely (permanently or just in <filename>/run</filename>)</entry>
+ <entry morerows='1'>1</entry>
+ </row>
+ <row>
+ <entry><literal>masked-runtime</literal></entry>
+ </row>
+ <row>
+ <entry><literal>static</literal></entry>
+ <entry>Unit is not enabled, but has no provisions for enabling in [Install] section</entry>
+ <entry>1</entry>
+ </row>
+ <row>
+ <entry><literal>disabled</literal></entry>
+ <entry>Unit is not enabled</entry>
+ <entry>1</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
</listitem>
</varlistentry>
<variablelist>
<varlistentry>
- <term><command>list-jobs</command></term>
+ <term><command>list-jobs <optional><replaceable>PATTERN...</replaceable></optional></command></term>
<listitem>
- <para>List jobs that are in progress.</para>
+ <para>List jobs that are in progress. If one or more
+ <replaceable>PATTERN</replaceable>s are specified, only
+ jobs for units matching one of them are shown.</para>
</listitem>
</varlistentry>
<varlistentry>
<variablelist>
<varlistentry>
- <term><command>snapshot [<replaceable>NAME</replaceable>]</command></term>
+ <term><command>snapshot <optional><replaceable>NAME</replaceable></optional></command></term>
<listitem>
<para>Create a snapshot. If a snapshot name is specified,
</listitem>
</varlistentry>
<varlistentry>
- <term><command>switch-root <replaceable>ROOT</replaceable> [<replaceable>INIT</replaceable>]</command></term>
+ <term><command>switch-root <replaceable>ROOT</replaceable> <optional><replaceable>INIT</replaceable></optional></command></term>
<listitem>
<para>Switches to a different root directory and executes a
</variablelist>
</refsect2>
+ <refsect2>
+ <title>Parameter Syntax</title>
+
+ <para>For unit commands the specified
+ <replaceable>NAME</replaceable> should be the full name of the
+ unit, or an abbreviated name which is automatically extended with
+ the <literal>.service</literal> suffix.
+ <programlisting># systemctl start foo.service</programlisting> is equivalent to:
+ <programlisting># systemctl start foo</programlisting>
+ Note that (absolute) paths to device nodes are automatically converted to device unit names, and other (absolute) paths to mount unit names.
+ <programlisting># systemctl status /dev/sda
+# systemctl status /home</programlisting> is equivalent to:
+ <programlisting># systemctl status dev-sda.device
+# systemctl status home.mount</programlisting></para>
+
+ <para>For unit file commands the
+ specified <replaceable>NAME</replaceable> should be the full name
+ of the unit file, or the absolute path to the unit file.
+ <programlisting># systemctl link /path/to/foo.service</programlisting>
+ </para>
+ </refsect2>
+
</refsect1>
<refsect1>