chiark / gitweb /
import: introduce new mini-daemon systemd-importd, and make machinectl a client to it
[elogind.git] / man / systemctl.xml
1 <?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4
5 <!--
6 This file is part of systemd.
7
8 Copyright 2010 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22 -->
23
24 <refentry id="systemctl"
25           xmlns:xi="http://www.w3.org/2001/XInclude">
26
27   <refentryinfo>
28     <title>systemctl</title>
29     <productname>systemd</productname>
30
31     <authorgroup>
32       <author>
33         <contrib>Developer</contrib>
34         <firstname>Lennart</firstname>
35         <surname>Poettering</surname>
36         <email>lennart@poettering.net</email>
37       </author>
38     </authorgroup>
39   </refentryinfo>
40
41   <refmeta>
42     <refentrytitle>systemctl</refentrytitle>
43     <manvolnum>1</manvolnum>
44   </refmeta>
45
46   <refnamediv>
47     <refname>systemctl</refname>
48     <refpurpose>Control the systemd system and service manager</refpurpose>
49   </refnamediv>
50
51   <refsynopsisdiv>
52     <cmdsynopsis>
53       <command>systemctl</command>
54       <arg choice="opt" rep="repeat">OPTIONS</arg>
55       <arg choice="plain">COMMAND</arg>
56       <arg choice="opt" rep="repeat">NAME</arg>
57     </cmdsynopsis>
58   </refsynopsisdiv>
59
60   <refsect1>
61     <title>Description</title>
62
63     <para><command>systemctl</command> may be used to introspect and
64     control the state of the <literal>systemd</literal> system and
65     service manager. Please refer to
66     <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
67     for an introduction into the basic concepts and functionality this
68     tool manages.</para>
69   </refsect1>
70
71   <refsect1>
72     <title>Options</title>
73
74     <para>The following options are understood:</para>
75
76     <variablelist>
77       <varlistentry>
78         <term><option>-t</option></term>
79         <term><option>--type=</option></term>
80
81         <listitem>
82           <para>The argument should be a comma-separated list of unit
83           types such as <option>service</option> and
84           <option>socket</option>.
85           </para>
86
87           <para>If one of the arguments is a unit type, when listing
88           units, limit display to certain unit types. Otherwise, units
89           of all types will be shown.</para>
90
91           <para>As a special case, if one of the arguments is
92           <option>help</option>, a list of allowed values will be
93           printed and the program will exit.</para>
94         </listitem>
95       </varlistentry>
96
97       <varlistentry>
98         <term><option>--state=</option></term>
99
100         <listitem>
101         <para>The argument should be a comma-separated list of unit
102         LOAD, SUB, or ACTIVE states. When listing units, show only
103         those in specified states. Use <option>--state=failed</option>
104         to show only failed units.</para>
105         </listitem>
106       </varlistentry>
107
108       <varlistentry>
109         <term><option>-p</option></term>
110         <term><option>--property=</option></term>
111
112         <listitem>
113           <para>When showing unit/job/manager properties with the
114           <command>show</command> command, limit display to certain
115           properties as specified as argument. If not specified, all
116           set properties are shown. The argument should be a
117           comma-separated list of property names, such as
118           <literal>MainPID</literal>. If specified more than once, all
119           properties with the specified names are shown.</para>
120         </listitem>
121       </varlistentry>
122
123       <varlistentry>
124         <term><option>-a</option></term>
125         <term><option>--all</option></term>
126
127         <listitem>
128           <para>When listing units, show all loaded units, regardless
129           of their state, including inactive units. When showing
130           unit/job/manager properties, show all properties regardless
131           whether they are set or not.</para>
132           <para>To list all units installed on the system, use the
133           <command>list-unit-files</command> command instead.</para>
134         </listitem>
135       </varlistentry>
136
137       <varlistentry>
138         <term><option>-r</option></term>
139         <term><option>--recursive</option></term>
140
141         <listitem>
142           <para>When listing units, also show units of local
143           containers. Units of local containers will be prefixed with
144           the container name, separated by a single colon character
145           (<literal>:</literal>).</para>
146         </listitem>
147       </varlistentry>
148
149       <varlistentry>
150         <term><option>--reverse</option></term>
151
152         <listitem>
153           <para>Show reverse dependencies between units with
154           <command>list-dependencies</command>, i.e. follow
155           dependencies of type <varname>WantedBy=</varname>,
156           <varname>RequiredBy=</varname>,
157           <varname>RequiredByOverrridable=</varname>,
158           <varname>PartOf=</varname>, <varname>BoundBy=</varname>,
159           instead of <varname>Wants=</varname> and similar.
160           </para>
161         </listitem>
162       </varlistentry>
163
164       <varlistentry>
165         <term><option>--after</option></term>
166
167         <listitem>
168           <para>With <command>list-dependencies</command>, show the
169           units that are ordered before the specified unit. In other
170           words, recursively list units following the
171           <varname>After=</varname> dependency.</para>
172
173           <para>Note that any <varname>After=</varname> dependency is
174           automatically mirrored to create a
175           <varname>Before=</varname> dependency. Temporal dependencies
176           may be specified explicitly, but are also created implicitly
177           for units which are <varname>WantedBy=</varname> targets
178           (see
179           <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>),
180           and as a result of other directives (for example
181           <varname>RequiresMountsFor=</varname>). Both explicitly
182           and implicitly introduced dependencies are shown with
183           <command>list-dependencies</command>.</para>
184         </listitem>
185       </varlistentry>
186
187       <varlistentry>
188         <term><option>--before</option></term>
189
190         <listitem>
191           <para>With <command>list-dependencies</command>, show the
192           units that are ordered after the specified unit. In other
193           words, recursively list units following the
194           <varname>Before=</varname> dependency.</para>
195         </listitem>
196       </varlistentry>
197
198       <varlistentry>
199         <term><option>-l</option></term>
200         <term><option>--full</option></term>
201
202         <listitem>
203           <para>Do not ellipsize unit names, process tree entries,
204           journal output, or truncate unit descriptions in the output
205           of <command>status</command>, <command>list-units</command>,
206           <command>list-jobs</command>, and
207           <command>list-timers</command>.</para>
208         </listitem>
209       </varlistentry>
210
211       <varlistentry>
212         <term><option>--show-types</option></term>
213
214         <listitem>
215           <para>When showing sockets, show the type of the socket.</para>
216         </listitem>
217       </varlistentry>
218
219       <varlistentry>
220         <term><option>--job-mode=</option></term>
221
222         <listitem>
223         <para>When queuing a new job, this option controls how to deal with
224         already queued jobs. It takes one of <literal>fail</literal>,
225         <literal>replace</literal>,
226         <literal>replace-irreversibly</literal>,
227         <literal>isolate</literal>,
228         <literal>ignore-dependencies</literal>,
229         <literal>ignore-requirements</literal> or
230         <literal>flush</literal>. Defaults to
231         <literal>replace</literal>, except when the
232         <command>isolate</command> command is used which implies the
233         <literal>isolate</literal> job mode.</para>
234
235         <para>If <literal>fail</literal> is specified and a requested
236         operation conflicts with a pending job (more specifically:
237         causes an already pending start job to be reversed into a stop
238         job or vice versa), cause the operation to fail.</para>
239
240         <para>If <literal>replace</literal> (the default) is
241         specified, any conflicting pending job will be replaced, as
242         necessary.</para>
243
244         <para>If <literal>replace-irreversibly</literal> is specified,
245         operate like <literal>replace</literal>, but also mark the new
246         jobs as irreversible. This prevents future conflicting
247         transactions from replacing these jobs (or even being enqueued
248         while the irreversible jobs are still pending). Irreversible
249         jobs can still be cancelled using the <command>cancel</command>
250         command.</para>
251
252         <para><literal>isolate</literal> is only valid for start
253         operations and causes all other units to be stopped when the
254         specified unit is started. This mode is always used when the
255         <command>isolate</command> command is used.</para>
256
257         <para><literal>flush</literal> will cause all queued jobs to
258         be canceled when the new job is enqueued.</para>
259
260         <para>If <literal>ignore-dependencies</literal> is specified,
261         then all unit dependencies are ignored for this new job and
262         the operation is executed immediately. If passed, no required
263         units of the unit passed will be pulled in, and no ordering
264         dependencies will be honored. This is mostly a debugging and
265         rescue tool for the administrator and should not be used by
266         applications.</para>
267
268         <para><literal>ignore-requirements</literal> is similar to
269         <literal>ignore-dependencies</literal>, but only causes the
270         requirement dependencies to be ignored, the ordering
271         dependencies will still be honoured.</para>
272         </listitem>
273
274       </varlistentry>
275
276       <varlistentry>
277         <term><option>-i</option></term>
278         <term><option>--ignore-inhibitors</option></term>
279
280         <listitem>
281           <para>When system shutdown or a sleep state is requested,
282           ignore inhibitor locks. Applications can establish inhibitor
283           locks to avoid that certain important operations (such as CD
284           burning or suchlike) are interrupted by system shutdown or a
285           sleep state. Any user may take these locks and privileged
286           users may override these locks. If any locks are taken,
287           shutdown and sleep state requests will normally fail
288           (regardless of whether privileged or not) and a list of active locks
289           is printed. However, if <option>--ignore-inhibitors</option>
290           is specified, the locks are ignored and not printed, and the
291           operation attempted anyway, possibly requiring additional
292           privileges.</para>
293         </listitem>
294       </varlistentry>
295
296       <varlistentry>
297         <term><option>-q</option></term>
298         <term><option>--quiet</option></term>
299
300         <listitem>
301           <para>Suppress output to standard output in
302           <command>snapshot</command>,
303           <command>is-active</command>,
304           <command>is-failed</command>,
305           <command>is-enabled</command>,
306           <command>is-system-running</command>,
307           <command>enable</command> and
308         <command>disable</command>.</para>
309         </listitem>
310       </varlistentry>
311
312       <varlistentry>
313         <term><option>--no-block</option></term>
314
315         <listitem>
316           <para>Do not synchronously wait for the requested operation
317           to finish. If this is not specified, the job will be
318           verified, enqueued and <command>systemctl</command> will
319           wait until it is completed. By passing this argument, it is
320           only verified and enqueued.</para>
321         </listitem>
322       </varlistentry>
323
324       <xi:include href="user-system-options.xml" xpointer="user" />
325       <xi:include href="user-system-options.xml" xpointer="system" />
326
327       <!-- we do not document -failed here, as it has been made
328            redundant by -state=failed, which it predates. To keep
329            things simple we only document the new switch, while
330            keeping the old one around for compatibility only. -->
331
332       <varlistentry>
333         <term><option>--no-wall</option></term>
334
335         <listitem>
336           <para>Do not send wall message before halt, power-off,
337           reboot.</para>
338         </listitem>
339       </varlistentry>
340
341       <varlistentry>
342         <term><option>--global</option></term>
343
344         <listitem>
345           <para>When used with <command>enable</command> and
346           <command>disable</command>, operate on the global user
347           configuration directory, thus enabling or disabling a unit
348           file globally for all future logins of all users.</para>
349         </listitem>
350       </varlistentry>
351
352       <varlistentry>
353         <term><option>--no-reload</option></term>
354
355         <listitem>
356           <para>When used with <command>enable</command> and
357           <command>disable</command>, do not implicitly reload daemon
358           configuration after executing the changes.</para>
359         </listitem>
360       </varlistentry>
361
362       <varlistentry>
363         <term><option>--no-ask-password</option></term>
364
365         <listitem>
366           <para>When used with <command>start</command> and related
367           commands, disables asking for passwords. Background services
368           may require input of a password or passphrase string, for
369           example to unlock system hard disks or cryptographic
370           certificates. Unless this option is specified and the
371           command is invoked from a terminal,
372           <command>systemctl</command> will query the user on the
373           terminal for the necessary secrets. Use this option to
374           switch this behavior off. In this case, the password must be
375           supplied by some other means (for example graphical password
376           agents) or the service might fail. This also disables
377           querying the user for authentication for privileged
378           operations.</para>
379         </listitem>
380       </varlistentry>
381
382       <varlistentry>
383         <term><option>--kill-who=</option></term>
384
385         <listitem>
386           <para>When used with <command>kill</command>, choose which
387           processes to send a signal to. Must be one of
388           <option>main</option>, <option>control</option> or
389           <option>all</option> to select whether to kill only the main
390           process, the control process or all processes of the
391           unit. The main process of the unit is the one that defines
392           the life-time of it. A control process of a unit is one that
393           is invoked by the manager to induce state changes of it. For
394           example, all processes started due to the
395           <varname>ExecStartPre=</varname>,
396           <varname>ExecStop=</varname> or
397           <varname>ExecReload=</varname> settings of service units are
398           control processes. Note that there is only one control
399           process per unit at a time, as only one state change is
400           executed at a time. For services of type
401           <varname>Type=forking</varname>, the initial process started
402           by the manager for <varname>ExecStart=</varname> is a
403           control process, while the process ultimately forked off by
404           that one is then considered the main process of the unit (if
405           it can be determined). This is different for service units
406           of other types, where the process forked off by the manager
407           for <varname>ExecStart=</varname> is always the main process
408           itself. A service unit consists of zero or one main process,
409           zero or one control process plus any number of additional
410           processes. Not all unit types manage processes of these
411           types however. For example, for mount units, control processes
412           are defined (which are the invocations of
413           <filename>/usr/bin/mount</filename> and
414           <filename>/usr/bin/umount</filename>), but no main process
415           is defined. If omitted, defaults to
416           <option>all</option>.</para>
417         </listitem>
418
419       </varlistentry>
420
421       <varlistentry>
422         <term><option>-s</option></term>
423         <term><option>--signal=</option></term>
424
425         <listitem>
426           <para>When used with <command>kill</command>, choose which
427           signal to send to selected processes. Must be one of the
428           well known signal specifiers such as <constant>SIGTERM</constant>, <constant>SIGINT</constant> or
429           <constant>SIGSTOP</constant>. If omitted, defaults to
430           <option>SIGTERM</option>.</para>
431         </listitem>
432       </varlistentry>
433
434       <varlistentry>
435         <term><option>-f</option></term>
436         <term><option>--force</option></term>
437
438         <listitem>
439           <para>When used with <command>enable</command>, overwrite
440           any existing conflicting symlinks.</para>
441
442           <para>When used with <command>halt</command>,
443           <command>poweroff</command>, <command>reboot</command> or
444           <command>kexec</command>, execute the selected operation
445           without shutting down all units. However, all processes will
446           be killed forcibly and all file systems are unmounted or
447           remounted read-only. This is hence a drastic but relatively
448           safe option to request an immediate reboot. If
449           <option>--force</option> is specified twice for these
450           operations, they will be executed immediately without
451           terminating any processes or unmounting any file
452           systems. Warning: specifying <option>--force</option> twice
453           with any of these operations might result in data
454           loss.</para>
455         </listitem>
456       </varlistentry>
457
458       <varlistentry>
459         <term><option>--root=</option></term>
460
461         <listitem>
462           <para>When used with
463           <command>enable</command>/<command>disable</command>/<command>is-enabled</command>
464           (and related commands), use alternative root path when
465           looking for unit files.</para>
466         </listitem>
467
468       </varlistentry>
469
470       <varlistentry>
471         <term><option>--runtime</option></term>
472
473         <listitem>
474           <para>When used with <command>enable</command>,
475           <command>disable</command>, <command>edit</command>,
476           (and related commands), make changes only temporarily, so
477           that they are lost on the next reboot. This will have the
478           effect that changes are not made in subdirectories of
479           <filename>/etc</filename> but in <filename>/run</filename>,
480           with identical immediate effects, however, since the latter
481           is lost on reboot, the changes are lost too.</para>
482
483           <para>Similarly, when used with
484           <command>set-property</command>, make changes only
485           temporarily, so that they are lost on the next
486           reboot.</para>
487         </listitem>
488       </varlistentry>
489
490       <varlistentry>
491         <term><option>--preset-mode=</option></term>
492
493         <listitem>
494           <para>Takes one of <literal>full</literal> (the default),
495           <literal>enable-only</literal>,
496           <literal>disable-only</literal>. When used with the
497           <command>preset</command> or <command>preset-all</command>
498           commands, controls whether units shall be disabled and
499           enabled according to the preset rules, or only enabled, or
500           only disabled.</para>
501         </listitem>
502       </varlistentry>
503
504       <varlistentry>
505         <term><option>-n</option></term>
506         <term><option>--lines=</option></term>
507
508         <listitem>
509           <para>When used with <command>status</command>, controls the
510           number of journal lines to show, counting from the most
511           recent ones. Takes a positive integer argument. Defaults to
512           10.</para>
513         </listitem>
514       </varlistentry>
515
516       <varlistentry>
517         <term><option>-o</option></term>
518         <term><option>--output=</option></term>
519
520         <listitem>
521           <para>When used with <command>status</command>, controls the
522           formatting of the journal entries that are shown. For the
523           available choices, see
524           <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
525           Defaults to <literal>short</literal>.</para>
526         </listitem>
527       </varlistentry>
528
529       <varlistentry>
530         <term><option>--plain</option></term>
531
532         <listitem>
533           <para>When used with <command>list-dependencies</command>,
534           the output is printed as a list instead of a tree.</para>
535         </listitem>
536       </varlistentry>
537
538       <xi:include href="user-system-options.xml" xpointer="host" />
539       <xi:include href="user-system-options.xml" xpointer="machine" />
540
541       <xi:include href="standard-options.xml" xpointer="no-pager" />
542       <xi:include href="standard-options.xml" xpointer="no-legend" />
543       <xi:include href="standard-options.xml" xpointer="help" />
544       <xi:include href="standard-options.xml" xpointer="version" />
545     </variablelist>
546   </refsect1>
547
548   <refsect1>
549     <title>Commands</title>
550
551     <para>The following commands are understood:</para>
552
553     <refsect2>
554       <title>Unit Commands</title>
555
556       <variablelist>
557         <varlistentry>
558           <term><command>list-units <optional><replaceable>PATTERN</replaceable>...</optional></command></term>
559
560           <listitem>
561             <para>List known units (subject to limitations specified
562             with <option>-t</option>). If one or more
563             <replaceable>PATTERN</replaceable>s are specified, only
564             units matching one of them are shown.</para>
565
566             <para>This is the default command.</para>
567           </listitem>
568         </varlistentry>
569
570         <varlistentry>
571           <term><command>list-sockets <optional><replaceable>PATTERN</replaceable>...</optional></command></term>
572
573           <listitem>
574             <para>List socket units ordered by listening address.
575             If one or more <replaceable>PATTERN</replaceable>s are
576             specified, only socket units matching one of them are
577             shown. Produces output similar to
578             <programlisting>
579 LISTEN           UNIT                        ACTIVATES
580 /dev/initctl     systemd-initctl.socket      systemd-initctl.service
581 ...
582 [::]:22          sshd.socket                 sshd.service
583 kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
584
585 5 sockets listed.</programlisting>
586             Note: because the addresses might contains spaces, this output
587             is not suitable for programmatic consumption.
588             </para>
589
590             <para>See also the options <option>--show-types</option>,
591             <option>--all</option>, and <option>--state=</option>.</para>
592           </listitem>
593         </varlistentry>
594
595         <varlistentry>
596           <term><command>list-timers <optional><replaceable>PATTERN</replaceable>...</optional></command></term>
597
598           <listitem>
599             <para>List timer units ordered by the time they elapse
600             next. If one or more <replaceable>PATTERN</replaceable>s
601             are specified, only units matching one of them are shown.
602             </para>
603
604             <para>See also the options <option>--all</option> and
605             <option>--state=</option>.</para>
606           </listitem>
607         </varlistentry>
608
609         <varlistentry>
610           <term><command>start <replaceable>PATTERN</replaceable>...</command></term>
611
612           <listitem>
613             <para>Start (activate) one or more units specified on the
614             command line.</para>
615
616             <para>Note that glob patterns operate on a list of currently
617             loaded units. Units which are not active and are not in a
618             failed state usually are not loaded, and would not be
619             matched by any pattern. In addition, in case of
620             instantiated units, systemd is often unaware of the
621             instance name until the instance has been started. Therefore,
622             using glob patterns with <command>start</command>
623             has limited usefulness.</para>
624           </listitem>
625         </varlistentry>
626         <varlistentry>
627           <term><command>stop <replaceable>PATTERN</replaceable>...</command></term>
628
629           <listitem>
630             <para>Stop (deactivate) one or more units specified on the
631             command line.</para>
632           </listitem>
633         </varlistentry>
634         <varlistentry>
635           <term><command>reload <replaceable>PATTERN</replaceable>...</command></term>
636
637           <listitem>
638             <para>Asks all units listed on the command line to reload
639             their configuration. Note that this will reload the
640             service-specific configuration, not the unit configuration
641             file of systemd. If you want systemd to reload the
642             configuration file of a unit, use the
643             <command>daemon-reload</command> command. In other words:
644             for the example case of Apache, this will reload Apache's
645             <filename>httpd.conf</filename> in the web server, not the
646             <filename>apache.service</filename> systemd unit
647             file.</para>
648
649             <para>This command should not be confused with the
650             <command>daemon-reload</command> command.</para>
651           </listitem>
652
653         </varlistentry>
654         <varlistentry>
655           <term><command>restart <replaceable>PATTERN</replaceable>...</command></term>
656
657           <listitem>
658             <para>Restart one or more units specified on the command
659             line. If the units are not running yet, they will be
660             started.</para>
661           </listitem>
662         </varlistentry>
663         <varlistentry>
664           <term><command>try-restart <replaceable>PATTERN</replaceable>...</command></term>
665
666           <listitem>
667             <para>Restart one or more units specified on the command
668             line if the units are running. This does nothing if units are not
669             running.  Note that, for compatibility with Red Hat init
670             scripts, <command>condrestart</command> is equivalent to this
671             command.</para>
672           </listitem>
673         </varlistentry>
674         <varlistentry>
675           <term><command>reload-or-restart <replaceable>PATTERN</replaceable>...</command></term>
676
677           <listitem>
678             <para>Reload one or more units if they support it. If not,
679             restart them instead. If the units are not running yet, they
680             will be started.</para>
681           </listitem>
682         </varlistentry>
683         <varlistentry>
684           <term><command>reload-or-try-restart <replaceable>PATTERN</replaceable>...</command></term>
685
686           <listitem>
687             <para>Reload one or more units if they support it. If not,
688             restart them instead. This does nothing if the units are not
689             running. Note that, for compatibility with SysV init scripts,
690             <command>force-reload</command> is equivalent to this
691             command.</para>
692           </listitem>
693         </varlistentry>
694         <varlistentry>
695           <term><command>isolate <replaceable>NAME</replaceable></command></term>
696
697           <listitem>
698             <para>Start the unit specified on the command line and its
699             dependencies and stop all others. If a unit name with no
700             extension is given, an extension of
701             <literal>.target</literal> will be assumed.</para>
702
703             <para>This is similar to changing the runlevel in a
704             traditional init system. The <command>isolate</command>
705             command will immediately stop processes that are not enabled
706             in the new unit, possibly including the graphical
707             environment or terminal you are currently using.</para>
708
709             <para>Note that this is allowed only on units where
710             <option>AllowIsolate=</option> is enabled. See
711             <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
712             for details.</para>
713           </listitem>
714         </varlistentry>
715         <varlistentry>
716           <term><command>kill <replaceable>PATTERN</replaceable>...</command></term>
717
718           <listitem>
719             <para>Send a signal to one or more processes of the
720             unit. Use <option>--kill-who=</option> to select which
721             process to kill. Use <option>--signal=</option> to select
722             the signal to send.</para>
723           </listitem>
724         </varlistentry>
725         <varlistentry>
726           <term><command>is-active <replaceable>PATTERN</replaceable>...</command></term>
727
728           <listitem>
729             <para>Check whether any of the specified units are active
730             (i.e. running). Returns an exit code
731             <constant>0</constant> if at least one is active, or
732             non-zero otherwise. Unless <option>--quiet</option> is
733             specified, this will also print the current unit state to
734             standard output.</para>
735           </listitem>
736         </varlistentry>
737         <varlistentry>
738           <term><command>is-failed <replaceable>PATTERN</replaceable>...</command></term>
739
740           <listitem>
741             <para>Check whether any of the specified units are in a
742             "failed" state. Returns an exit code
743             <constant>0</constant> if at least one has failed,
744             non-zero otherwise. Unless <option>--quiet</option> is
745             specified, this will also print the current unit state to
746             standard output.</para>
747           </listitem>
748         </varlistentry>
749         <varlistentry>
750           <term><command>status</command> <optional><replaceable>PATTERN</replaceable>...|<replaceable>PID</replaceable>...]</optional></term>
751
752           <listitem>
753             <para>Show terse runtime status information about one or
754             more units, followed by most recent log data from the
755             journal. If no units are specified, show system status. If
756             combined with <option>--all</option>, also show the status of
757             all units (subject to limitations specified with
758             <option>-t</option>). If a PID is passed, show information
759             about the unit the process belongs to.</para>
760
761             <para>This function is intended to generate human-readable
762             output. If you are looking for computer-parsable output,
763             use <command>show</command> instead. By default this
764             function only shows 10 lines of output and ellipsizes
765             lines to fit in the terminal window. This can be changes
766             with <option>--lines</option> and <option>--full</option>,
767             see above. In addition, <command>journalctl
768             --unit=<replaceable>NAME</replaceable></command> or
769             <command>journalctl
770             --user-unit=<replaceable>NAME</replaceable></command> use
771             a similar filter for messages and might be more
772             convenient.
773             </para>
774           </listitem>
775         </varlistentry>
776         <varlistentry>
777           <term><command>show</command> <optional><replaceable>PATTERN</replaceable>...|<replaceable>JOB</replaceable>...</optional></term>
778
779           <listitem>
780             <para>Show properties of one or more units, jobs, or the
781             manager itself. If no argument is specified, properties of
782             the manager will be shown. If a unit name is specified,
783             properties of the unit is shown, and if a job id is
784             specified, properties of the job is shown. By default, empty
785             properties are suppressed. Use <option>--all</option> to
786             show those too. To select specific properties to show, use
787             <option>--property=</option>. This command is intended to be
788             used whenever computer-parsable output is required. Use
789             <command>status</command> if you are looking for formatted
790             human-readable output.</para>
791           </listitem>
792         </varlistentry>
793         <varlistentry>
794           <term><command>cat <replaceable>PATTERN</replaceable>...</command></term>
795
796           <listitem>
797             <para>Show backing files of one or more units. Prints the
798             "fragment" and "drop-ins" (source files) of units. Each
799             file is preceded by a comment which includes the file
800             name.</para>
801           </listitem>
802         </varlistentry>
803         <varlistentry>
804           <term><command>set-property <replaceable>NAME</replaceable> <replaceable>ASSIGNMENT</replaceable>...</command></term>
805
806           <listitem>
807             <para>Set the specified unit properties at runtime where
808             this is supported. This allows changing configuration
809             parameter properties such as resource control settings at
810             runtime. Not all properties may be changed at runtime, but
811             many resource control settings (primarily those in
812             <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>)
813             may. The changes are applied instantly, and stored on disk
814             for future boots, unless <option>--runtime</option> is
815             passed, in which case the settings only apply until the
816             next reboot. The syntax of the property assignment follows
817             closely the syntax of assignments in unit files.</para>
818
819             <para>Example: <command>systemctl set-property foobar.service CPUShares=777</command></para>
820
821             <para>Note that this command allows changing multiple
822             properties at the same time, which is preferable over
823             setting them individually. Like unit file configuration
824             settings, assigning the empty list to list parameters will
825             reset the list.</para>
826           </listitem>
827         </varlistentry>
828
829         <varlistentry>
830           <term><command>help <replaceable>PATTERN</replaceable>...|<replaceable>PID</replaceable>...</command></term>
831
832           <listitem>
833             <para>Show manual pages for one or more units, if
834             available. If a PID is given, the manual pages for the unit
835             the process belongs to are shown.</para>
836           </listitem>
837         </varlistentry>
838
839         <varlistentry>
840           <term><command>reset-failed [<replaceable>PATTERN</replaceable>...]</command></term>
841
842           <listitem>
843             <para>Reset the <literal>failed</literal> state of the
844             specified units, or if no unit name is passed, reset the state of all
845             units. When a unit fails in some way (i.e. process exiting
846             with non-zero error code, terminating abnormally or timing
847             out), it will automatically enter the
848             <literal>failed</literal> state and its exit code and status
849             is recorded for introspection by the administrator until the
850             service is restarted or reset with this command.</para>
851           </listitem>
852         </varlistentry>
853
854         <varlistentry>
855           <term>
856             <command>list-dependencies</command>
857             <optional><replaceable>NAME</replaceable></optional>
858           </term>
859
860           <listitem>
861             <para>Shows units required and wanted by the specified
862             unit. This recursively lists units following the
863             <varname>Requires=</varname>,
864             <varname>RequiresOverridable=</varname>,
865             <varname>Requisite=</varname>,
866             <varname>RequisiteOverridable=</varname>,
867             <varname>Wants=</varname>, <varname>BindsTo=</varname>
868             dependencies. If no unit is specified,
869             <filename>default.target</filename> is implied.</para>
870
871             <para>By default, only target units are recursively
872             expanded. When <option>--all</option> is passed, all other
873             units are recursively expanded as well.</para>
874
875             <para>Options <option>--reverse</option>,
876             <option>--after</option>, <option>--before</option>
877             may be used to change what types of dependencies
878             are shown.</para>
879           </listitem>
880         </varlistentry>
881       </variablelist>
882     </refsect2>
883
884     <refsect2>
885       <title>Unit File Commands</title>
886
887       <variablelist>
888         <varlistentry>
889           <term><command>list-unit-files <optional><replaceable>PATTERN...</replaceable></optional></command></term>
890
891           <listitem>
892             <para>List installed unit files. If one or more
893             <replaceable>PATTERN</replaceable>s are specified, only
894             units whose filename (just the last component of the path)
895             matches one of them are shown.</para>
896           </listitem>
897         </varlistentry>
898
899         <varlistentry>
900           <term><command>enable <replaceable>NAME</replaceable>...</command></term>
901
902           <listitem>
903             <para>Enable one or more unit files or unit file instances,
904             as specified on the command line. This will create a number
905             of symlinks as encoded in the <literal>[Install]</literal>
906             sections of the unit files. After the symlinks have been
907             created, the systemd configuration is reloaded (in a way that
908             is equivalent to <command>daemon-reload</command>) to ensure
909             the changes are taken into account immediately. Note that
910             this does <emphasis>not</emphasis> have the effect of also
911             starting any of the units being enabled. If this
912             is desired, a separate <command>start</command> command must
913             be invoked for the unit. Also note that in case of instance
914             enablement, symlinks named the same as instances are created in
915             the install location, however they all point to the same
916             template unit file.</para>
917
918             <para>This command will print the actions executed. This
919             output may be suppressed by passing <option>--quiet</option>.
920             </para>
921
922             <para>Note that this operation creates only the suggested
923             symlinks for the units. While this command is the
924             recommended way to manipulate the unit configuration
925             directory, the administrator is free to make additional
926             changes manually by placing or removing symlinks in the
927             directory. This is particularly useful to create
928             configurations that deviate from the suggested default
929             installation. In this case, the administrator must make sure
930             to invoke <command>daemon-reload</command> manually as
931             necessary to ensure the changes are taken into account.
932             </para>
933
934             <para>Enabling units should not be confused with starting
935             (activating) units, as done by the <command>start</command>
936             command. Enabling and starting units is orthogonal: units
937             may be enabled without being started and started without
938             being enabled. Enabling simply hooks the unit into various
939             suggested places (for example, so that the unit is
940             automatically started on boot or when a particular kind of
941             hardware is plugged in). Starting actually spawns the daemon
942             process (in case of service units), or binds the socket (in
943             case of socket units), and so on.</para>
944
945             <para>Depending on whether <option>--system</option>,
946             <option>--user</option>, <option>--runtime</option>,
947             or <option>--global</option> is specified, this enables the unit
948             for the system, for the calling user only, for only this boot of
949             the system, or for all future logins of all users, or only this
950             boot.  Note that in the last case, no systemd daemon
951             configuration is reloaded.</para>
952
953             <para>Using <command>enable</command> on masked units
954             results in an error.</para>
955           </listitem>
956         </varlistentry>
957
958         <varlistentry>
959           <term><command>disable <replaceable>NAME</replaceable>...</command></term>
960
961           <listitem>
962             <para>Disables one or more units. This removes all symlinks
963             to the specified unit files from the unit configuration
964             directory, and hence undoes the changes made by
965             <command>enable</command>. Note however that this removes
966             all symlinks to the unit files (i.e. including manual
967             additions), not just those actually created by
968             <command>enable</command>. This call implicitly reloads the
969             systemd daemon configuration after completing the disabling
970             of the units. Note that this command does not implicitly
971             stop the units that are being disabled. If this is desired,
972             an additional <command>stop</command> command should be
973             executed afterwards.</para>
974
975             <para>This command will print the actions executed. This
976             output may be suppressed by passing <option>--quiet</option>.
977             </para>
978
979             <para>This command honors <option>--system</option>,
980             <option>--user</option>, <option>--runtime</option> and
981             <option>--global</option> in a similar way as
982             <command>enable</command>.</para>
983           </listitem>
984         </varlistentry>
985
986         <varlistentry>
987           <term><command>reenable <replaceable>NAME</replaceable>...</command></term>
988
989           <listitem>
990             <para>Reenable one or more unit files, as specified on the
991             command line. This is a combination of
992             <command>disable</command> and <command>enable</command> and
993             is useful to reset the symlinks a unit is enabled with to
994             the defaults configured in the <literal>[Install]</literal>
995             section of the unit file.</para>
996           </listitem>
997         </varlistentry>
998
999         <varlistentry>
1000           <term><command>preset <replaceable>NAME</replaceable>...</command></term>
1001
1002           <listitem>
1003             <para>Reset one or more unit files, as specified on the
1004             command line, to the defaults configured in the preset
1005             policy files. This has the same effect as
1006             <command>disable</command> or <command>enable</command>,
1007             depending how the unit is listed in the preset files.</para>
1008
1009             <para>Use <option>--preset-mode=</option> to control
1010             whether units shall be enabled and disabled, or only
1011             enabled, or only disabled.</para>
1012
1013             <para>For more information on the preset policy format,
1014             see
1015             <citerefentry><refentrytitle>systemd.preset</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
1016             For more information on the concept of presets, please
1017             consult the <ulink
1018             url="http://freedesktop.org/wiki/Software/systemd/Preset">Preset</ulink>
1019             document.</para>
1020           </listitem>
1021         </varlistentry>
1022
1023         <varlistentry>
1024           <term><command>preset-all</command></term>
1025
1026           <listitem>
1027             <para>Resets all installed unit files to the defaults
1028             configured in the preset policy file (see above).</para>
1029
1030             <para>Use <option>--preset-mode=</option> to control
1031             whether units shall be enabled and disabled, or only
1032             enabled, or only disabled.</para>
1033           </listitem>
1034         </varlistentry>
1035
1036         <varlistentry>
1037           <term><command>is-enabled <replaceable>NAME</replaceable>...</command></term>
1038
1039           <listitem>
1040             <para>Checks whether any of the specified unit files are
1041             enabled (as with <command>enable</command>). Returns an
1042             exit code of 0 if at least one is enabled, non-zero
1043             otherwise. Prints the current enable status (see table).
1044             To suppress this output, use <option>--quiet</option>.
1045             </para>
1046
1047             <table>
1048               <title>
1049                 <command>is-enabled</command> output
1050               </title>
1051
1052               <tgroup cols='3'>
1053                 <thead>
1054                   <row>
1055                     <entry>Printed string</entry>
1056                     <entry>Meaning</entry>
1057                     <entry>Return value</entry>
1058                   </row>
1059                 </thead>
1060                 <tbody>
1061                   <row>
1062                     <entry><literal>enabled</literal></entry>
1063                     <entry morerows='1'>Enabled through a symlink in <filename>.wants</filename> directory (permanently or just in <filename>/run</filename>).</entry>
1064                     <entry morerows='1'>0</entry>
1065                   </row>
1066                   <row>
1067                     <entry><literal>enabled-runtime</literal></entry>
1068                   </row>
1069                   <row>
1070                     <entry><literal>linked</literal></entry>
1071                     <entry morerows='1'>Made available through a symlink to the unit file (permanently or just in <filename>/run</filename>).</entry>
1072                     <entry morerows='1'>1</entry>
1073                   </row>
1074                   <row>
1075                     <entry><literal>linked-runtime</literal></entry>
1076                   </row>
1077                   <row>
1078                     <entry><literal>masked</literal></entry>
1079                     <entry morerows='1'>Disabled entirely (permanently or just in <filename>/run</filename>).</entry>
1080                     <entry morerows='1'>1</entry>
1081                   </row>
1082                   <row>
1083                     <entry><literal>masked-runtime</literal></entry>
1084                   </row>
1085                   <row>
1086                     <entry><literal>static</literal></entry>
1087                     <entry>Unit file is not enabled, and has no provisions for enabling in the <literal>[Install]</literal> section.</entry>
1088                     <entry>0</entry>
1089                   </row>
1090                   <row>
1091                     <entry><literal>indirect</literal></entry>
1092                     <entry>Unit file itself is not enabled, but it has a non-empty <varname>Also=</varname> setting in the <literal>[Install]</literal> section, listing other unit files that might be enabled.</entry>
1093                     <entry>0</entry>
1094                   </row>
1095                   <row>
1096                     <entry><literal>disabled</literal></entry>
1097                     <entry>Unit file is not enabled.</entry>
1098                     <entry>1</entry>
1099                   </row>
1100                 </tbody>
1101               </tgroup>
1102             </table>
1103
1104           </listitem>
1105         </varlistentry>
1106
1107         <varlistentry>
1108           <term><command>mask <replaceable>NAME</replaceable>...</command></term>
1109
1110           <listitem>
1111             <para>Mask one or more unit files, as specified on the
1112             command line. This will link these units to
1113             <filename>/dev/null</filename>, making it impossible to
1114             start them. This is a stronger version of
1115             <command>disable</command>, since it prohibits all kinds of
1116             activation of the unit, including enablement and manual
1117             activation. Use this option with care. This honors the
1118             <option>--runtime</option> option to only mask temporarily
1119             until the next reboot of the system.</para>
1120           </listitem>
1121         </varlistentry>
1122
1123         <varlistentry>
1124           <term><command>unmask <replaceable>NAME</replaceable>...</command></term>
1125
1126           <listitem>
1127             <para>Unmask one or more unit files, as specified on the
1128             command line. This will undo the effect of
1129             <command>mask</command>.</para>
1130           </listitem>
1131         </varlistentry>
1132
1133         <varlistentry>
1134           <term><command>link <replaceable>FILENAME</replaceable>...</command></term>
1135
1136           <listitem>
1137             <para>Link a unit file that is not in the unit file search
1138             paths into the unit file search path. This requires an
1139             absolute path to a unit file. The effect of this can be
1140             undone with <command>disable</command>. The effect of this
1141             command is that a unit file is available for
1142             <command>start</command> and other commands although it
1143             is not installed directly in the unit search path.</para>
1144           </listitem>
1145         </varlistentry>
1146
1147         <varlistentry>
1148           <term><command>add-wants <replaceable>TARGET</replaceable>
1149           <replaceable>NAME</replaceable>...</command></term>
1150           <term><command>add-requires <replaceable>TARGET</replaceable>
1151           <replaceable>NAME</replaceable>...</command></term>
1152
1153           <listitem>
1154             <para>Adds <literal>Wants=</literal> resp. <literal>Requires=</literal>
1155             dependency to the specified <replaceable>TARGET</replaceable> for
1156             one or more units. </para>
1157
1158             <para>This command honors <option>--system</option>,
1159             <option>--user</option>, <option>--runtime</option> and
1160             <option>--global</option> in a similar way as
1161             <command>enable</command>.</para>
1162
1163           </listitem>
1164         </varlistentry>
1165
1166         <varlistentry>
1167           <term><command>edit <replaceable>NAME</replaceable>...</command></term>
1168
1169           <listitem>
1170             <para>Edit a drop-in snippet or a whole replacement file if
1171             <option>--full</option> is specified, to extend or override the
1172             specified unit.</para>
1173
1174             <para>Depending on whether <option>--system</option> (the default),
1175             <option>--user</option>, or <option>--global</option> is specified,
1176             this creates a drop-in file for each unit either for the system,
1177             for the calling user or for all futures logins of all users. Then,
1178             the editor (see the "Environment" section below) is invoked on
1179             temporary files which will be written to the real location if the
1180             editor exits successfully.</para>
1181
1182             <para>If <option>--full</option> is specified, this will copy the
1183             original units instead of creating drop-in files.</para>
1184
1185             <para>If <option>--runtime</option> is specified, the changes will
1186             be made temporarily in <filename>/run</filename> and they will be
1187             lost on the next reboot.</para>
1188
1189             <para>If the temporary file is empty upon exit the modification of
1190             the related unit is canceled</para>
1191
1192             <para>After the units have been edited, systemd configuration is
1193             reloaded (in a way that is equivalent to <command>daemon-reload</command>).
1194             </para>
1195
1196             <para>Note that this command cannot be used to remotely edit units
1197             and that you cannot temporarily edit units which are in
1198             <filename>/etc</filename> since they take precedence over
1199             <filename>/run</filename>.</para>
1200           </listitem>
1201         </varlistentry>
1202
1203         <varlistentry>
1204           <term><command>get-default</command></term>
1205
1206           <listitem>
1207             <para>Return the default target to boot into. This returns
1208             the target unit name <filename>default.target</filename>
1209             is aliased (symlinked) to.</para>
1210           </listitem>
1211         </varlistentry>
1212
1213         <varlistentry>
1214           <term><command>set-default <replaceable>NAME</replaceable></command></term>
1215
1216           <listitem>
1217             <para>Set the default target to boot into. This sets
1218             (symlinks) the <filename>default.target</filename> alias
1219             to the given target unit.</para>
1220           </listitem>
1221         </varlistentry>
1222
1223       </variablelist>
1224     </refsect2>
1225
1226     <refsect2>
1227       <title>Machine Commands</title>
1228
1229       <variablelist>
1230         <varlistentry>
1231           <term><command>list-machines <optional><replaceable>PATTERN</replaceable>...</optional></command></term>
1232
1233           <listitem>
1234             <para>List the host and all running local containers with
1235             their state. If one or more
1236             <replaceable>PATTERN</replaceable>s are specified, only
1237             containers matching one of them are shown.
1238             </para>
1239           </listitem>
1240         </varlistentry>
1241       </variablelist>
1242     </refsect2>
1243
1244     <refsect2>
1245       <title>Job Commands</title>
1246
1247       <variablelist>
1248         <varlistentry>
1249           <term><command>list-jobs <optional><replaceable>PATTERN...</replaceable></optional></command></term>
1250
1251           <listitem>
1252             <para>List jobs that are in progress. If one or more
1253             <replaceable>PATTERN</replaceable>s are specified, only
1254             jobs for units matching one of them are shown.</para>
1255           </listitem>
1256         </varlistentry>
1257         <varlistentry>
1258           <term><command>cancel <replaceable>JOB</replaceable>...</command></term>
1259
1260           <listitem>
1261             <para>Cancel one or more jobs specified on the command line
1262             by their numeric job IDs. If no job ID is specified, cancel
1263             all pending jobs.</para>
1264           </listitem>
1265         </varlistentry>
1266       </variablelist>
1267     </refsect2>
1268
1269     <refsect2>
1270       <title>Snapshot Commands</title>
1271
1272       <variablelist>
1273         <varlistentry>
1274           <term><command>snapshot <optional><replaceable>NAME</replaceable></optional></command></term>
1275
1276           <listitem>
1277             <para>Create a snapshot. If a snapshot name is specified,
1278             the new snapshot will be named after it. If none is
1279             specified, an automatic snapshot name is generated. In
1280             either case, the snapshot name used is printed to standard
1281             output, unless <option>--quiet</option> is specified.
1282             </para>
1283
1284             <para>A snapshot refers to a saved state of the systemd
1285             manager. It is implemented itself as a unit that is
1286             generated dynamically with this command and has dependencies
1287             on all units active at the time. At a later time, the user
1288             may return to this state by using the
1289             <command>isolate</command> command on the snapshot unit.
1290             </para>
1291
1292             <para>Snapshots are only useful for saving and restoring
1293             which units are running or are stopped, they do not
1294             save/restore any other state. Snapshots are dynamic and lost
1295             on reboot.</para>
1296           </listitem>
1297         </varlistentry>
1298         <varlistentry>
1299           <term><command>delete <replaceable>PATTERN</replaceable>...</command></term>
1300
1301           <listitem>
1302             <para>Remove a snapshot previously created with
1303             <command>snapshot</command>.</para>
1304           </listitem>
1305         </varlistentry>
1306       </variablelist>
1307     </refsect2>
1308
1309     <refsect2>
1310       <title>Environment Commands</title>
1311
1312       <variablelist>
1313         <varlistentry>
1314           <term><command>show-environment</command></term>
1315
1316           <listitem>
1317             <para>Dump the systemd manager environment block. The
1318             environment block will be dumped in straight-forward form
1319             suitable for sourcing into a shell script. This environment
1320             block will be passed to all processes the manager
1321             spawns.</para>
1322           </listitem>
1323         </varlistentry>
1324         <varlistentry>
1325           <term><command>set-environment <replaceable>VARIABLE=VALUE</replaceable>...</command></term>
1326
1327           <listitem>
1328             <para>Set one or more systemd manager environment variables,
1329             as specified on the command line.</para>
1330           </listitem>
1331         </varlistentry>
1332         <varlistentry>
1333           <term><command>unset-environment <replaceable>VARIABLE</replaceable>...</command></term>
1334
1335           <listitem>
1336             <para>Unset one or more systemd manager environment
1337             variables. If only a variable name is specified, it will be
1338             removed regardless of its value. If a variable and a value
1339             are specified, the variable is only removed if it has the
1340             specified value.</para>
1341           </listitem>
1342         </varlistentry>
1343         <varlistentry>
1344           <term>
1345             <command>import-environment</command>
1346             <optional><replaceable>VARIABLE...</replaceable></optional>
1347           </term>
1348
1349           <listitem>
1350             <para>Import all, one or more environment variables set on
1351             the client into the systemd manager environment block. If
1352             no arguments are passed, the entire environment block is
1353             imported. Otherwise, a list of one or more environment
1354             variable names should be passed, whose client-side values
1355             are then imported into the manager's environment
1356             block.</para>
1357           </listitem>
1358         </varlistentry>
1359       </variablelist>
1360     </refsect2>
1361
1362     <refsect2>
1363       <title>Manager Lifecycle Commands</title>
1364
1365       <variablelist>
1366         <varlistentry>
1367           <term><command>daemon-reload</command></term>
1368
1369           <listitem>
1370             <para>Reload systemd manager configuration. This will reload
1371             all unit files and recreate the entire dependency
1372             tree. While the daemon is being reloaded, all sockets systemd
1373             listens on behalf of user configuration will stay
1374             accessible.</para> <para>This command should not be confused
1375             with the <command>reload</command> command.</para>
1376           </listitem>
1377         </varlistentry>
1378         <varlistentry>
1379           <term><command>daemon-reexec</command></term>
1380
1381           <listitem>
1382             <para>Reexecute the systemd manager. This will serialize the
1383             manager state, reexecute the process and deserialize the
1384             state again. This command is of little use except for
1385             debugging and package upgrades. Sometimes, it might be
1386             helpful as a heavy-weight <command>daemon-reload</command>.
1387             While the daemon is being reexecuted, all sockets systemd listening
1388             on behalf of user configuration will stay accessible.
1389             </para>
1390           </listitem>
1391         </varlistentry>
1392       </variablelist>
1393     </refsect2>
1394
1395     <refsect2>
1396       <title>System Commands</title>
1397
1398       <variablelist>
1399         <varlistentry>
1400           <term><command>is-system-running</command></term>
1401
1402           <listitem>
1403             <para>Checks whether the system is operational. This
1404             returns success when the system is fully up and running,
1405             meaning not in startup, shutdown or maintenance
1406             mode. Failure is returned otherwise. In addition, the
1407             current state is printed in a short string to standard
1408             output, see table below. Use <option>--quiet</option> to
1409             suppress this output.</para>
1410
1411             <table>
1412               <title>Manager Operational States</title>
1413               <tgroup cols='2'>
1414                 <colspec colname='name' />
1415                 <colspec colname='description' />
1416                 <thead>
1417                   <row>
1418                     <entry>Name</entry>
1419                     <entry>Description</entry>
1420                   </row>
1421                 </thead>
1422                 <tbody>
1423                   <row>
1424                     <entry><varname>initializing</varname></entry>
1425                     <entry><para>Early bootup, before
1426                     <filename>basic.target</filename> is reached
1427                     or the <varname>maintenance</varname> state entered.
1428                     </para></entry>
1429                   </row>
1430                   <row>
1431                     <entry><varname>starting</varname></entry>
1432                     <entry><para>Late bootup, before the job queue
1433                     becomes idle for the first time, or one of the
1434                     rescue targets are reached.</para></entry>
1435                   </row>
1436                   <row>
1437                     <entry><varname>running</varname></entry>
1438                     <entry><para>The system is fully
1439                     operational.</para></entry>
1440                   </row>
1441                   <row>
1442                     <entry><varname>degraded</varname></entry>
1443                     <entry><para>The system is operational but one or more
1444                     units failed.</para></entry>
1445                   </row>
1446                   <row>
1447                     <entry><varname>maintenance</varname></entry>
1448                     <entry><para>The rescue or emergency target is
1449                     active.</para></entry>
1450                   </row>
1451                   <row>
1452                     <entry><varname>stopping</varname></entry>
1453                     <entry><para>The manager is shutting
1454                     down.</para></entry>
1455                   </row>
1456                 </tbody>
1457               </tgroup>
1458             </table>
1459           </listitem>
1460         </varlistentry>
1461
1462         <varlistentry>
1463           <term><command>default</command></term>
1464
1465           <listitem>
1466             <para>Enter default mode. This is mostly equivalent to
1467             <command>isolate default.target</command>.</para>
1468           </listitem>
1469         </varlistentry>
1470
1471         <varlistentry>
1472           <term><command>rescue</command></term>
1473
1474           <listitem>
1475             <para>Enter rescue mode. This is mostly equivalent to
1476             <command>isolate rescue.target</command>, but also prints a
1477             wall message to all users.</para>
1478           </listitem>
1479         </varlistentry>
1480         <varlistentry>
1481           <term><command>emergency</command></term>
1482
1483           <listitem>
1484             <para>Enter emergency mode. This is mostly equivalent to
1485             <command>isolate emergency.target</command>, but also prints
1486             a wall message to all users.</para>
1487           </listitem>
1488         </varlistentry>
1489         <varlistentry>
1490           <term><command>halt</command></term>
1491
1492           <listitem>
1493             <para>Shut down and halt the system. This is mostly equivalent to
1494             <command>start halt.target --irreversible</command>, but also
1495             prints a wall message to all users.  If combined with
1496             <option>--force</option>, shutdown of all running services is
1497             skipped, however all processes are killed and all file
1498             systems are unmounted or mounted read-only, immediately
1499             followed by the system halt.  If <option>--force</option> is
1500             specified twice, the operation is immediately executed
1501             without terminating any processes or unmounting any file
1502             systems. This may result in data loss.</para>
1503           </listitem>
1504         </varlistentry>
1505         <varlistentry>
1506           <term><command>poweroff</command></term>
1507
1508           <listitem>
1509             <para>Shut down and power-off the system. This is mostly
1510             equivalent to <command>start poweroff.target --irreversible</command>,
1511             but also prints a wall message to all users. If combined with
1512             <option>--force</option>, shutdown of all running services is
1513             skipped, however all processes are killed and all file
1514             systems are unmounted or mounted read-only, immediately
1515             followed by the powering off. If <option>--force</option> is
1516             specified twice, the operation is immediately executed
1517             without terminating any processes or unmounting any file
1518             systems. This may result in data loss.</para>
1519           </listitem>
1520         </varlistentry>
1521         <varlistentry>
1522           <term><command>reboot <optional><replaceable>arg</replaceable></optional></command></term>
1523
1524           <listitem>
1525             <para>Shut down and reboot the system. This is mostly
1526             equivalent to <command>start reboot.target --irreversible</command>,
1527             but also prints a wall message to all users. If combined with
1528             <option>--force</option>, shutdown of all running services is
1529             skipped, however all processes are killed and all file
1530             systems are unmounted or mounted read-only, immediately
1531             followed by the reboot. If <option>--force</option> is
1532             specified twice, the operation is immediately executed
1533             without terminating any processes or unmounting any file
1534             systems. This may result in data loss.</para>
1535
1536             <para>If the optional argument
1537             <replaceable>arg</replaceable> is given, it will be passed
1538             as the optional argument to the
1539             <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
1540             system call. The value is architecture and firmware
1541             specific. As an example, <literal>recovery</literal> might
1542             be used to trigger system recovery, and
1543             <literal>fota</literal> might be used to trigger a
1544             <quote>firmware over the air</quote> update.</para>
1545           </listitem>
1546         </varlistentry>
1547
1548         <varlistentry>
1549           <term><command>kexec</command></term>
1550
1551           <listitem>
1552             <para>Shut down and reboot the system via kexec. This is
1553             mostly equivalent to <command>start kexec.target --irreversible</command>,
1554             but also prints a wall message to all users. If combined
1555             with <option>--force</option>, shutdown of all running
1556             services is skipped, however all processes are killed and
1557             all file systems are unmounted or mounted read-only,
1558             immediately followed by the reboot.</para>
1559           </listitem>
1560         </varlistentry>
1561
1562         <varlistentry>
1563           <term><command>exit</command></term>
1564
1565           <listitem>
1566             <para>Ask the systemd manager to quit. This is only
1567             supported for user service managers (i.e. in conjunction
1568             with the <option>--user</option> option) and will fail
1569             otherwise.</para>
1570           </listitem>
1571         </varlistentry>
1572
1573         <varlistentry>
1574           <term><command>switch-root <replaceable>ROOT</replaceable> <optional><replaceable>INIT</replaceable></optional></command></term>
1575
1576           <listitem>
1577             <para>Switches to a different root directory and executes a
1578             new system manager process below it. This is intended for
1579             usage in initial RAM disks ("initrd"), and will transition
1580             from the initrd's system manager process (a.k.a "init"
1581             process) to the main system manager process. This call takes two
1582             arguments: the directory that is to become the new root directory, and
1583             the path to the new system manager binary below it to
1584             execute as PID 1. If the latter is omitted or the empty
1585             string, a systemd binary will automatically be searched for
1586             and used as init. If the system manager path is omitted or
1587             equal to the empty string, the state of the initrd's system
1588             manager process is passed to the main system manager, which
1589             allows later introspection of the state of the services
1590             involved in the initrd boot.</para>
1591           </listitem>
1592         </varlistentry>
1593
1594         <varlistentry>
1595           <term><command>suspend</command></term>
1596
1597           <listitem>
1598             <para>Suspend the system. This will trigger activation of
1599             the special <filename>suspend.target</filename> target.
1600             </para>
1601           </listitem>
1602         </varlistentry>
1603
1604         <varlistentry>
1605           <term><command>hibernate</command></term>
1606
1607           <listitem>
1608             <para>Hibernate the system. This will trigger activation of
1609             the special <filename>hibernate.target</filename> target.
1610             </para>
1611           </listitem>
1612         </varlistentry>
1613
1614         <varlistentry>
1615           <term><command>hybrid-sleep</command></term>
1616
1617           <listitem>
1618             <para>Hibernate and suspend the system. This will trigger
1619             activation of the special
1620             <filename>hybrid-sleep.target</filename> target.</para>
1621           </listitem>
1622         </varlistentry>
1623       </variablelist>
1624     </refsect2>
1625
1626     <refsect2>
1627       <title>Parameter Syntax</title>
1628
1629       <para>Unit commands listed above take either a single unit name
1630       (designated as <replaceable>NAME</replaceable>), or multiple
1631       unit specifications (designated as
1632       <replaceable>PATTERN</replaceable>...). In the first case, the
1633       unit name with or without a suffix must be given. If the suffix
1634       is not specified, systemctl will append a suitable suffix,
1635       <literal>.service</literal> by default, and a type-specific
1636       suffix in case of commands which operate only on specific unit
1637       types. For example,
1638       <programlisting># systemctl start sshd</programlisting> and
1639       <programlisting># systemctl start sshd.service</programlisting>
1640       are equivalent, as are
1641       <programlisting># systemctl isolate default</programlisting>
1642       and
1643       <programlisting># systemctl isolate default.target</programlisting>
1644       Note that (absolute) paths to device nodes are automatically
1645       converted to device unit names, and other (absolute) paths to
1646       mount unit names.
1647       <programlisting># systemctl status /dev/sda
1648 # systemctl status /home</programlisting>
1649       are equivalent to:
1650       <programlisting># systemctl status dev-sda.device
1651 # systemctl status home.mount</programlisting>
1652       In the second case, shell-style globs will be matched against
1653       currently loaded units; literal unit names, with or without
1654       a suffix, will be treated as in the first case. This means that
1655       literal unit names always refer to exactly one unit, but globs
1656       may match zero units and this is not considered an error.</para>
1657
1658       <para>Glob patterns use
1659       <citerefentry><refentrytitle>fnmatch</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
1660       so normal shell-style globbing rules are used, and
1661       <literal>*</literal>, <literal>?</literal>,
1662       <literal>[]</literal> may be used. See
1663       <citerefentry><refentrytitle>glob</refentrytitle><manvolnum>7</manvolnum></citerefentry>
1664       for more details. The patterns are matched against the names of
1665       currently loaded units, and patterns which do not match anything
1666       are silently skipped. For example:
1667       <programlisting># systemctl stop sshd@*.service</programlisting>
1668       will stop all <filename>sshd@.service</filename> instances.
1669       </para>
1670
1671       <para>For unit file commands, the specified
1672       <replaceable>NAME</replaceable> should be the full name of the
1673       unit file, or the absolute path to the unit file:
1674       <programlisting># systemctl enable foo.service</programlisting>
1675       or
1676       <programlisting># systemctl link /path/to/foo.service</programlisting>
1677       </para>
1678     </refsect2>
1679
1680   </refsect1>
1681
1682   <refsect1>
1683     <title>Exit status</title>
1684
1685     <para>On success, 0 is returned, a non-zero failure
1686     code otherwise.</para>
1687   </refsect1>
1688
1689   <refsect1>
1690     <title>Environment</title>
1691
1692     <variablelist class='environment-variables'>
1693       <varlistentry>
1694         <term><varname>$SYSTEMD_EDITOR</varname></term>
1695
1696         <listitem><para>Editor to use when editing units; overrides
1697         <varname>$EDITOR</varname> and <varname>$VISUAL</varname>. If neither
1698         <varname>$SYSTEMD_EDITOR</varname> nor <varname>$EDITOR</varname> nor
1699         <varname>$VISUAL</varname> are present or if it is set to an empty
1700         string or if their execution failed, systemctl will try to execute well
1701         known editors in this order:
1702         <citerefentry><refentrytitle>nano</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1703         <citerefentry><refentrytitle>vim</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1704         <citerefentry><refentrytitle>vi</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
1705         </para></listitem>
1706       </varlistentry>
1707     </variablelist>
1708     <xi:include href="less-variables.xml" xpointer="pager"/>
1709     <xi:include href="less-variables.xml" xpointer="less"/>
1710   </refsect1>
1711
1712   <refsect1>
1713     <title>See Also</title>
1714     <para>
1715       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1716       <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1717       <citerefentry><refentrytitle>loginctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1718       <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1719       <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1720       <citerefentry><refentrytitle>systemd.resource-management</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1721       <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1722       <citerefentry project='man-pages'><refentrytitle>wall</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1723       <citerefentry><refentrytitle>systemd.preset</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1724       <citerefentry><refentrytitle>glob</refentrytitle><manvolnum>7</manvolnum></citerefentry>
1725     </para>
1726   </refsect1>
1727
1728 </refentry>