]> git.ipfire.org Git - thirdparty/systemd.git/blob - man/systemd.xml
core: change how crash_shell and crash_reboot interact
[thirdparty/systemd.git] / man / systemd.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="systemd"
25 xmlns:xi="http://www.w3.org/2001/XInclude">
26
27 <refentryinfo>
28 <title>systemd</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>systemd</refentrytitle>
43 <manvolnum>1</manvolnum>
44 </refmeta>
45
46 <refnamediv>
47 <refname>systemd</refname>
48 <refname>init</refname>
49 <refpurpose>systemd system and service manager</refpurpose>
50 </refnamediv>
51
52 <refsynopsisdiv>
53 <cmdsynopsis>
54 <command>systemd <arg choice="opt" rep="repeat">OPTIONS</arg></command>
55 </cmdsynopsis>
56 <cmdsynopsis>
57 <command>init <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="req">COMMAND</arg></command>
58 </cmdsynopsis>
59 </refsynopsisdiv>
60
61 <refsect1>
62 <title>Description</title>
63
64 <para>systemd is a system and service manager for Linux operating
65 systems. When run as first process on boot (as PID 1), it acts as
66 init system that brings up and maintains userspace
67 services.</para>
68
69 <para>For compatibility with SysV, if systemd is called as
70 <command>init</command> and a PID that is not 1, it will execute
71 <command>telinit</command> and pass all command line arguments
72 unmodified. That means <command>init</command> and
73 <command>telinit</command> are mostly equivalent when invoked from
74 normal login sessions. See
75 <citerefentry><refentrytitle>telinit</refentrytitle><manvolnum>8</manvolnum></citerefentry>
76 for more information.</para>
77
78 <para>When run as a system instance, systemd interprets the
79 configuration file <filename>system.conf</filename> and the files
80 in <filename>system.conf.d</filename> directories; when run as a
81 user instance, systemd interprets the configuration file
82 <filename>user.conf</filename> and the files in
83 <filename>user.conf.d</filename> directories. See
84 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
85 for more information.</para>
86 </refsect1>
87
88 <refsect1>
89 <title>Options</title>
90
91 <para>The following options are understood:</para>
92
93 <variablelist>
94 <varlistentry>
95 <term><option>--test</option></term>
96
97 <listitem><para>Determine startup sequence, dump it and exit.
98 This is an option useful for debugging only.</para></listitem>
99 </varlistentry>
100 <varlistentry>
101 <term><option>--dump-configuration-items</option></term>
102
103 <listitem><para>Dump understood unit configuration items. This
104 outputs a terse but complete list of configuration items
105 understood in unit definition files.</para></listitem>
106 </varlistentry>
107 <varlistentry>
108 <term><option>--unit=</option></term>
109
110 <listitem><para>Set default unit to activate on startup. If
111 not specified, defaults to
112 <filename>default.target</filename>.</para></listitem>
113 </varlistentry>
114 <varlistentry>
115 <term><option>--system</option></term>
116 <term><option>--user</option></term>
117
118 <listitem><para>For <option>--system</option>, tell systemd to
119 run a system instance, even if the process ID is not 1, i.e.
120 systemd is not run as init process. <option>--user</option>
121 does the opposite, running a user instance even if the process
122 ID is 1. Normally it should not be necessary to pass these
123 options, as systemd automatically detects the mode it is
124 started in. These options are hence of little use except for
125 debugging. Note that it is not supported booting and
126 maintaining a full system with systemd running in
127 <option>--system</option> mode, but PID not 1. In practice,
128 passing <option>--system</option> explicitly is only useful in
129 conjunction with <option>--test</option>.</para></listitem>
130 </varlistentry>
131 <varlistentry>
132 <term><option>--dump-core</option></term>
133
134 <listitem><para>Enable core dumping on crash. This switch has
135 no effect when running as user instance. This setting may also
136 be enabled during boot on the kernel command line via the
137 <varname>systemd.dump_core=</varname> option, see
138 below.</para></listitem>
139 </varlistentry>
140
141 <varlistentry>
142 <term><option>--crash-vt=</option><replaceable>VT</replaceable></term>
143
144 <listitem><para>Switch to a specific virtual console (VT) on
145 crash. Takes a positive integer in the range 1..63, or a
146 boolean argument. If an integer is passed, selects which VT to
147 switch to. If <constant>yes</constant>, the VT kernel messages
148 are written to is selected. If <constant>no</constant>, no VT
149 switch is attempted. This switch has no effect when running as
150 user instance. This setting may also be enabled during boot,
151 on the kernel command line via the
152 <varname>systemd.crash_vt=</varname> option, see
153 below.</para></listitem>
154 </varlistentry>
155
156 <varlistentry>
157 <term><option>--crash-shell</option></term>
158
159 <listitem><para>Run a shell on crash. This switch has no
160 effect when running as user instance. This setting may also be
161 enabled during boot, on the kernel command line via the
162 <varname>systemd.crash_shell=</varname> option, see
163 below.</para></listitem>
164 </varlistentry>
165
166 <varlistentry>
167 <term><option>--crash-reboot</option></term>
168
169 <listitem><para>Automatically reboot the system on crash. This
170 switch has no effect when running as user instance. This
171 setting may also be enabled during boot, on the kernel command
172 line via the <varname>systemd.crash_reboot=</varname> option,
173 see below.</para></listitem>
174 </varlistentry>
175
176 <varlistentry>
177 <term><option>--confirm-spawn</option></term>
178
179 <listitem><para>Ask for confirmation when spawning processes.
180 This switch has no effect when run as user
181 instance.</para></listitem>
182 </varlistentry>
183 <varlistentry>
184 <term><option>--show-status=</option></term>
185
186 <listitem><para>Show terse service status information while
187 booting. This switch has no effect when run as user instance.
188 Takes a boolean argument which may be omitted which is
189 interpreted as <option>true</option>.</para></listitem>
190 </varlistentry>
191 <varlistentry>
192 <term><option>--log-target=</option></term>
193
194 <listitem><para>Set log target. Argument must be one of
195 <option>console</option>,
196 <option>journal</option>,
197 <option>kmsg</option>,
198 <option>journal-or-kmsg</option>,
199 <option>null</option>.</para></listitem>
200 </varlistentry>
201 <varlistentry>
202 <term><option>--log-level=</option></term>
203
204 <listitem><para>Set log level. As
205 argument this accepts a numerical log
206 level or the well-known <citerefentry project='man-pages'><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
207 symbolic names (lowercase):
208 <option>emerg</option>,
209 <option>alert</option>,
210 <option>crit</option>,
211 <option>err</option>,
212 <option>warning</option>,
213 <option>notice</option>,
214 <option>info</option>,
215 <option>debug</option>.</para></listitem>
216 </varlistentry>
217 <varlistentry>
218 <term><option>--log-color=</option></term>
219
220 <listitem><para>Highlight important log messages. Argument is
221 a boolean value. If the argument is omitted, it defaults to
222 <option>true</option>.</para></listitem>
223 </varlistentry>
224 <varlistentry>
225 <term><option>--log-location=</option></term>
226
227 <listitem><para>Include code location in log messages. This is
228 mostly relevant for debugging purposes. Argument is a boolean
229 value. If the argument is omitted it defaults to
230 <option>true</option>.</para></listitem>
231 </varlistentry>
232 <varlistentry>
233 <term><option>--default-standard-output=</option></term>
234 <term><option>--default-standard-error=</option></term>
235
236 <listitem><para>Sets the default output or error output for
237 all services and sockets, respectively. That is, controls the
238 default for <option>StandardOutput=</option> and
239 <option>StandardError=</option> (see
240 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
241 for details). Takes one of
242 <option>inherit</option>,
243 <option>null</option>,
244 <option>tty</option>,
245 <option>journal</option>,
246 <option>journal+console</option>,
247 <option>syslog</option>,
248 <option>syslog+console</option>,
249 <option>kmsg</option>,
250 <option>kmsg+console</option>. If the
251 argument is omitted
252 <option>--default-standard-output=</option> defaults to
253 <option>journal</option> and
254 <option>--default-standard-error=</option> to
255 <option>inherit</option>.</para></listitem>
256 </varlistentry>
257
258 <xi:include href="standard-options.xml" xpointer="help" />
259 <xi:include href="standard-options.xml" xpointer="version" />
260 </variablelist>
261 </refsect1>
262
263 <refsect1>
264 <title>Concepts</title>
265
266 <para>systemd provides a dependency system between various
267 entities called "units" of 12 different types. Units encapsulate
268 various objects that are relevant for system boot-up and
269 maintenance. The majority of units are configured in unit
270 configuration files, whose syntax and basic set of options is
271 described in
272 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
273 however some are created automatically from other configuration,
274 dynamically from system state or programmatically at runtime.
275 Units may be "active" (meaning started, bound, plugged in, ...,
276 depending on the unit type, see below), or "inactive" (meaning
277 stopped, unbound, unplugged, ...), as well as in the process of
278 being activated or deactivated, i.e. between the two states (these
279 states are called "activating", "deactivating"). A special
280 "failed" state is available as well, which is very similar to
281 "inactive" and is entered when the service failed in some way
282 (process returned error code on exit, or crashed, or an operation
283 timed out). If this state is entered, the cause will be logged,
284 for later reference. Note that the various unit types may have a
285 number of additional substates, which are mapped to the five
286 generalized unit states described here.</para>
287
288 <para>The following unit types are available:</para>
289
290 <orderedlist>
291 <listitem><para>Service units, which start and control daemons
292 and the processes they consist of. For details see
293 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
294
295 <listitem><para>Socket units, which encapsulate local IPC or
296 network sockets in the system, useful for socket-based
297 activation. For details about socket units see
298 <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
299 for details on socket-based activation and other forms of
300 activation, see
301 <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para></listitem>
302
303 <listitem><para>Target units are useful to group units, or
304 provide well-known synchronization points during boot-up, see
305 <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
306
307 <listitem><para>Device units expose kernel devices in systemd
308 and may be used to implement device-based activation. For
309 details see
310 <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
311
312 <listitem><para>Mount units control mount points in the file
313 system, for details see
314 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
315
316 <listitem><para>Automount units provide automount capabilities,
317 for on-demand mounting of file systems as well as parallelized
318 boot-up. See
319 <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
320
321 <listitem><para>Snapshot units can be used to temporarily save
322 the state of the set of systemd units, which later may be
323 restored by activating the saved snapshot unit. For more
324 information see
325 <citerefentry><refentrytitle>systemd.snapshot</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
326
327 <listitem><para>Timer units are useful for triggering activation
328 of other units based on timers. You may find details in
329 <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
330
331 <listitem><para>Swap units are very similar to mount units and
332 encapsulate memory swap partitions or files of the operating
333 system. They are described in
334 <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
335
336 <listitem><para>Path units may be used to activate other
337 services when file system objects change or are modified. See
338 <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
339
340 <listitem><para>Slice units may be used to group units which
341 manage system processes (such as service and scope units) in a
342 hierarchical tree for resource management purposes. See
343 <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
344
345 <listitem><para>Scope units are similar to service units, but
346 manage foreign processes instead of starting them as well. See
347 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
348
349 </orderedlist>
350
351 <para>Units are named as their configuration files. Some units
352 have special semantics. A detailed list is available in
353 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
354
355 <para>systemd knows various kinds of dependencies, including
356 positive and negative requirement dependencies (i.e.
357 <varname>Requires=</varname> and <varname>Conflicts=</varname>) as
358 well as ordering dependencies (<varname>After=</varname> and
359 <varname>Before=</varname>). NB: ordering and requirement
360 dependencies are orthogonal. If only a requirement dependency
361 exists between two units (e.g. <filename>foo.service</filename>
362 requires <filename>bar.service</filename>), but no ordering
363 dependency (e.g. <filename>foo.service</filename> after
364 <filename>bar.service</filename>) and both are requested to start,
365 they will be started in parallel. It is a common pattern that both
366 requirement and ordering dependencies are placed between two
367 units. Also note that the majority of dependencies are implicitly
368 created and maintained by systemd. In most cases, it should be
369 unnecessary to declare additional dependencies manually, however
370 it is possible to do this.</para>
371
372 <para>Application programs and units (via dependencies) may
373 request state changes of units. In systemd, these requests are
374 encapsulated as 'jobs' and maintained in a job queue. Jobs may
375 succeed or can fail, their execution is ordered based on the
376 ordering dependencies of the units they have been scheduled
377 for.</para>
378
379 <para>On boot systemd activates the target unit
380 <filename>default.target</filename> whose job is to activate
381 on-boot services and other on-boot units by pulling them in via
382 dependencies. Usually the unit name is just an alias (symlink) for
383 either <filename>graphical.target</filename> (for fully-featured
384 boots into the UI) or <filename>multi-user.target</filename> (for
385 limited console-only boots for use in embedded or server
386 environments, or similar; a subset of graphical.target). However,
387 it is at the discretion of the administrator to configure it as an
388 alias to any other target unit. See
389 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
390 for details about these target units.</para>
391
392 <para>Processes systemd spawns are placed in individual Linux
393 control groups named after the unit which they belong to in the
394 private systemd hierarchy. (see <ulink
395 url="https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt">cgroups.txt</ulink>
396 for more information about control groups, or short "cgroups").
397 systemd uses this to effectively keep track of processes. Control
398 group information is maintained in the kernel, and is accessible
399 via the file system hierarchy (beneath
400 <filename>/sys/fs/cgroup/systemd/</filename>), or in tools such as
401 <citerefentry project='man-pages'><refentrytitle>systemd-cgls</refentrytitle><manvolnum>1</manvolnum></citerefentry>
402 or
403 <citerefentry project='man-pages'><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry>
404 (<command>ps xawf -eo pid,user,cgroup,args</command> is
405 particularly useful to list all processes and the systemd units
406 they belong to.).</para>
407
408 <para>systemd is compatible with the SysV init system to a large
409 degree: SysV init scripts are supported and simply read as an
410 alternative (though limited) configuration file format. The SysV
411 <filename>/dev/initctl</filename> interface is provided, and
412 compatibility implementations of the various SysV client tools are
413 available. In addition to that, various established Unix
414 functionality such as <filename>/etc/fstab</filename> or the
415 <filename>utmp</filename> database are supported.</para>
416
417 <para>systemd has a minimal transaction system: if a unit is
418 requested to start up or shut down it will add it and all its
419 dependencies to a temporary transaction. Then, it will verify if
420 the transaction is consistent (i.e. whether the ordering of all
421 units is cycle-free). If it is not, systemd will try to fix it up,
422 and removes non-essential jobs from the transaction that might
423 remove the loop. Also, systemd tries to suppress non-essential
424 jobs in the transaction that would stop a running service. Finally
425 it is checked whether the jobs of the transaction contradict jobs
426 that have already been queued, and optionally the transaction is
427 aborted then. If all worked out and the transaction is consistent
428 and minimized in its impact it is merged with all already
429 outstanding jobs and added to the run queue. Effectively this
430 means that before executing a requested operation, systemd will
431 verify that it makes sense, fixing it if possible, and only
432 failing if it really cannot work.</para>
433
434 <para>Systemd contains native implementations of various tasks
435 that need to be executed as part of the boot process. For example,
436 it sets the hostname or configures the loopback network device. It
437 also sets up and mounts various API file systems, such as
438 <filename>/sys</filename> or <filename>/proc</filename>.</para>
439
440 <para>For more information about the concepts and
441 ideas behind systemd, please refer to the
442 <ulink url="http://0pointer.de/blog/projects/systemd.html">Original Design Document</ulink>.</para>
443
444 <para>Note that some but not all interfaces provided
445 by systemd are covered by the
446 <ulink url="http://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface
447 Stability Promise</ulink>.</para>
448
449 <para>Units may be generated dynamically at boot and system
450 manager reload time, for example based on other configuration
451 files or parameters passed on the kernel command line. For details see
452 <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
453
454 <para>Systems which invoke systemd in a container or initrd
455 environment should implement the
456 <ulink url="http://www.freedesktop.org/wiki/Software/systemd/ContainerInterface">Container Interface</ulink> or
457 <ulink url="http://www.freedesktop.org/wiki/Software/systemd/InitrdInterface">initrd Interface</ulink>
458 specifications, respectively.</para>
459 </refsect1>
460
461 <refsect1>
462 <title>Directories</title>
463
464 <variablelist>
465 <varlistentry>
466 <term>System unit directories</term>
467
468 <listitem><para>The systemd system manager reads unit
469 configuration from various directories. Packages that want to
470 install unit files shall place them in the directory returned
471 by <command>pkg-config systemd
472 --variable=systemdsystemunitdir</command>. Other directories
473 checked are <filename>/usr/local/lib/systemd/system</filename>
474 and <filename>/usr/lib/systemd/system</filename>. User
475 configuration always takes precedence. <command>pkg-config
476 systemd --variable=systemdsystemconfdir</command> returns the
477 path of the system configuration directory. Packages should
478 alter the content of these directories only with the
479 <command>enable</command> and <command>disable</command>
480 commands of the
481 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
482 tool. Full list of directories is provided in
483 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
484 </para></listitem>
485 </varlistentry>
486 </variablelist>
487
488 <variablelist>
489 <varlistentry>
490 <term>User unit directories</term>
491
492 <listitem><para>Similar rules apply for the user unit
493 directories. However, here the
494 <ulink url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
495 Base Directory specification</ulink> is followed to find
496 units. Applications should place their unit files in the
497 directory returned by <command>pkg-config systemd
498 --variable=systemduserunitdir</command>. Global configuration
499 is done in the directory reported by <command>pkg-config
500 systemd --variable=systemduserconfdir</command>. The
501 <command>enable</command> and <command>disable</command>
502 commands of the
503 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
504 tool can handle both global (i.e. for all users) and private
505 (for one user) enabling/disabling of units. Full list of
506 directories is provided in
507 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
508 </para></listitem>
509 </varlistentry>
510 </variablelist>
511
512 <variablelist>
513 <varlistentry>
514 <term>SysV init scripts directory</term>
515
516 <listitem><para>The location of the SysV init script directory
517 varies between distributions. If systemd cannot find a native
518 unit file for a requested service, it will look for a SysV
519 init script of the same name (with the
520 <filename>.service</filename> suffix
521 removed).</para></listitem>
522 </varlistentry>
523 </variablelist>
524
525 <variablelist>
526 <varlistentry>
527 <term>SysV runlevel link farm directory</term>
528
529 <listitem><para>The location of the SysV runlevel link farm
530 directory varies between distributions. systemd will take the
531 link farm into account when figuring out whether a service
532 shall be enabled. Note that a service unit with a native unit
533 configuration file cannot be started by activating it in the
534 SysV runlevel link farm.</para></listitem>
535 </varlistentry>
536 </variablelist>
537 </refsect1>
538
539 <refsect1>
540 <title>Signals</title>
541
542 <variablelist>
543 <varlistentry>
544 <term><constant>SIGTERM</constant></term>
545
546 <listitem><para>Upon receiving this signal the systemd system
547 manager serializes its state, reexecutes itself and
548 deserializes the saved state again. This is mostly equivalent
549 to <command>systemctl daemon-reexec</command>.</para>
550
551 <para>systemd user managers will start the
552 <filename>exit.target</filename> unit when this signal is
553 received. This is mostly equivalent to <command>systemctl
554 --user start exit.target</command>.</para></listitem>
555 </varlistentry>
556
557 <varlistentry>
558 <term><constant>SIGINT</constant></term>
559
560 <listitem><para>Upon receiving this signal the systemd system
561 manager will start the
562 <filename>ctrl-alt-del.target</filename> unit. This is mostly
563 equivalent to <command>systemctl start
564 ctl-alt-del.target</command>. If this signal is received more
565 often than 7 times per 2s an immediate reboot is triggered.
566 Note that pressing Ctrl-Alt-Del on the console will trigger
567 this signal. Hence, if a reboot is hanging pressing
568 Ctrl-Alt-Del more than 7 times in 2s is a relatively safe way
569 to trigger an immediate reboot.</para>
570
571 <para>systemd user managers treat this signal the same way as
572 <constant>SIGTERM</constant>.</para></listitem>
573 </varlistentry>
574
575 <varlistentry>
576 <term><constant>SIGWINCH</constant></term>
577
578 <listitem><para>When this signal is received the systemd
579 system manager will start the
580 <filename>kbrequest.target</filename> unit. This is mostly
581 equivalent to <command>systemctl start
582 kbrequest.target</command>.</para>
583
584 <para>This signal is ignored by systemd user
585 managers.</para></listitem>
586 </varlistentry>
587
588 <varlistentry>
589 <term><constant>SIGPWR</constant></term>
590
591 <listitem><para>When this signal is received the systemd
592 manager will start the <filename>sigpwr.target</filename>
593 unit. This is mostly equivalent to <command>systemctl start
594 sigpwr.target</command>.</para></listitem>
595 </varlistentry>
596
597 <varlistentry>
598 <term><constant>SIGUSR1</constant></term>
599
600 <listitem><para>When this signal is received the systemd
601 manager will try to reconnect to the D-Bus
602 bus.</para></listitem>
603 </varlistentry>
604
605 <varlistentry>
606 <term><constant>SIGUSR2</constant></term>
607
608 <listitem><para>When this signal is received the systemd
609 manager will log its complete state in human readable form.
610 The data logged is the same as printed by
611 <command>systemd-analyze dump</command>.</para></listitem>
612 </varlistentry>
613
614 <varlistentry>
615 <term><constant>SIGHUP</constant></term>
616
617 <listitem><para>Reloads the complete daemon configuration.
618 This is mostly equivalent to <command>systemctl
619 daemon-reload</command>.</para></listitem>
620 </varlistentry>
621
622 <varlistentry>
623 <term><constant>SIGRTMIN+0</constant></term>
624
625 <listitem><para>Enters default mode, starts the
626 <filename>default.target</filename> unit. This is mostly
627 equivalent to <command>systemctl start
628 default.target</command>.</para></listitem>
629 </varlistentry>
630
631 <varlistentry>
632 <term><constant>SIGRTMIN+1</constant></term>
633
634 <listitem><para>Enters rescue mode, starts the
635 <filename>rescue.target</filename> unit. This is mostly
636 equivalent to <command>systemctl isolate
637 rescue.target</command>.</para></listitem>
638 </varlistentry>
639
640 <varlistentry>
641 <term><constant>SIGRTMIN+2</constant></term>
642
643 <listitem><para>Enters emergency mode, starts the
644 <filename>emergency.service</filename> unit. This is mostly
645 equivalent to <command>systemctl isolate
646 emergency.service</command>.</para></listitem>
647 </varlistentry>
648
649 <varlistentry>
650 <term><constant>SIGRTMIN+3</constant></term>
651
652 <listitem><para>Halts the machine, starts the
653 <filename>halt.target</filename> unit. This is mostly
654 equivalent to <command>systemctl start
655 halt.target</command>.</para></listitem>
656 </varlistentry>
657
658 <varlistentry>
659 <term><constant>SIGRTMIN+4</constant></term>
660
661 <listitem><para>Powers off the machine, starts the
662 <filename>poweroff.target</filename> unit. This is mostly
663 equivalent to <command>systemctl start
664 poweroff.target</command>.</para></listitem>
665 </varlistentry>
666
667 <varlistentry>
668 <term><constant>SIGRTMIN+5</constant></term>
669
670 <listitem><para>Reboots the machine, starts the
671 <filename>reboot.target</filename> unit. This is mostly
672 equivalent to <command>systemctl start
673 reboot.target</command>.</para></listitem>
674 </varlistentry>
675
676 <varlistentry>
677 <term><constant>SIGRTMIN+6</constant></term>
678
679 <listitem><para>Reboots the machine via kexec, starts the
680 <filename>kexec.target</filename> unit. This is mostly
681 equivalent to <command>systemctl start
682 kexec.target</command>.</para></listitem>
683 </varlistentry>
684
685 <varlistentry>
686 <term><constant>SIGRTMIN+13</constant></term>
687
688 <listitem><para>Immediately halts the machine.</para></listitem>
689 </varlistentry>
690
691 <varlistentry>
692 <term><constant>SIGRTMIN+14</constant></term>
693
694 <listitem><para>Immediately powers off the machine.</para></listitem>
695 </varlistentry>
696
697 <varlistentry>
698 <term><constant>SIGRTMIN+15</constant></term>
699
700 <listitem><para>Immediately reboots the machine.</para></listitem>
701 </varlistentry>
702
703 <varlistentry>
704 <term><constant>SIGRTMIN+16</constant></term>
705
706 <listitem><para>Immediately reboots the machine with kexec.</para></listitem>
707 </varlistentry>
708
709 <varlistentry>
710 <term><constant>SIGRTMIN+20</constant></term>
711
712 <listitem><para>Enables display of status messages on the
713 console, as controlled via
714 <varname>systemd.show_status=1</varname> on the kernel command
715 line.</para></listitem>
716 </varlistentry>
717
718 <varlistentry>
719 <term><constant>SIGRTMIN+21</constant></term>
720
721 <listitem><para>Disables display of
722 status messages on the console, as
723 controlled via
724 <varname>systemd.show_status=0</varname>
725 on the kernel command
726 line.</para></listitem>
727 </varlistentry>
728
729 <varlistentry>
730 <term><constant>SIGRTMIN+22</constant></term>
731 <term><constant>SIGRTMIN+23</constant></term>
732
733 <listitem><para>Sets the log level to <literal>debug</literal>
734 (or <literal>info</literal> on
735 <constant>SIGRTMIN+23</constant>), as controlled via
736 <varname>systemd.log_level=debug</varname> (or
737 <varname>systemd.log_level=info</varname> on
738 <constant>SIGRTMIN+23</constant>) on the kernel command
739 line.</para></listitem>
740 </varlistentry>
741
742 <varlistentry>
743 <term><constant>SIGRTMIN+24</constant></term>
744
745 <listitem><para>Immediately exits the manager (only available
746 for --user instances).</para></listitem>
747 </varlistentry>
748
749 <varlistentry>
750 <term><constant>SIGRTMIN+26</constant></term>
751 <term><constant>SIGRTMIN+27</constant></term>
752 <term><constant>SIGRTMIN+28</constant></term>
753
754 <listitem><para>Sets the log level to
755 <literal>journal-or-kmsg</literal> (or
756 <literal>console</literal> on
757 <constant>SIGRTMIN+27</constant>, <literal>kmsg</literal> on
758 <constant>SIGRTMIN+28</constant>), as controlled via
759 <varname>systemd.log_target=journal-or-kmsg</varname> (or
760 <varname>systemd.log_target=console</varname> on
761 <constant>SIGRTMIN+27</constant> or
762 <varname>systemd.log_target=kmsg</varname> on
763 <constant>SIGRTMIN+28</constant>) on the kernel command
764 line.</para></listitem>
765 </varlistentry>
766 </variablelist>
767 </refsect1>
768
769 <refsect1>
770 <title>Environment</title>
771
772 <variablelist class='environment-variables'>
773 <varlistentry>
774 <term><varname>$SYSTEMD_LOG_LEVEL</varname></term>
775 <listitem><para>systemd reads the log level from this
776 environment variable. This can be overridden with
777 <option>--log-level=</option>.</para></listitem>
778 </varlistentry>
779
780 <varlistentry>
781 <term><varname>$SYSTEMD_LOG_TARGET</varname></term>
782 <listitem><para>systemd reads the log target from this
783 environment variable. This can be overridden with
784 <option>--log-target=</option>.</para></listitem>
785 </varlistentry>
786
787 <varlistentry>
788 <term><varname>$SYSTEMD_LOG_COLOR</varname></term>
789 <listitem><para>Controls whether systemd highlights important
790 log messages. This can be overridden with
791 <option>--log-color=</option>.</para></listitem>
792 </varlistentry>
793
794 <varlistentry>
795 <term><varname>$SYSTEMD_LOG_LOCATION</varname></term>
796 <listitem><para>Controls whether systemd prints the code
797 location along with log messages. This can be overridden with
798 <option>--log-location=</option>.</para></listitem>
799 </varlistentry>
800
801 <varlistentry>
802 <term><varname>$XDG_CONFIG_HOME</varname></term>
803 <term><varname>$XDG_CONFIG_DIRS</varname></term>
804 <term><varname>$XDG_DATA_HOME</varname></term>
805 <term><varname>$XDG_DATA_DIRS</varname></term>
806
807 <listitem><para>The systemd user manager uses these variables
808 in accordance to the <ulink
809 url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
810 Base Directory specification</ulink> to find its
811 configuration.</para></listitem>
812 </varlistentry>
813
814 <varlistentry>
815 <term><varname>$SYSTEMD_UNIT_PATH</varname></term>
816
817 <listitem><para>Controls where systemd looks for unit
818 files.</para></listitem>
819 </varlistentry>
820
821 <varlistentry>
822 <term><varname>$SYSTEMD_SYSVINIT_PATH</varname></term>
823
824 <listitem><para>Controls where systemd looks for SysV init
825 scripts.</para></listitem>
826 </varlistentry>
827
828 <varlistentry>
829 <term><varname>$SYSTEMD_SYSVRCND_PATH</varname></term>
830
831 <listitem><para>Controls where systemd looks for SysV init
832 script runlevel link farms.</para></listitem>
833 </varlistentry>
834
835 <varlistentry>
836 <term><varname>$LISTEN_PID</varname></term>
837 <term><varname>$LISTEN_FDS</varname></term>
838 <term><varname>$LISTEN_FDNAMES</varname></term>
839
840 <listitem><para>Set by systemd for supervised processes during
841 socket-based activation. See
842 <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
843 for more information. </para></listitem>
844 </varlistentry>
845
846 <varlistentry>
847 <term><varname>$NOTIFY_SOCKET</varname></term>
848
849 <listitem><para>Set by systemd for supervised processes for
850 status and start-up completion notification. See
851 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
852 for more information. </para></listitem>
853 </varlistentry>
854 </variablelist>
855 </refsect1>
856
857 <refsect1>
858 <title>Kernel Command Line</title>
859
860 <para>When run as system instance systemd parses a number of
861 kernel command line arguments<footnote><para>If run inside a Linux
862 container these arguments may be passed as command line arguments
863 to systemd itself, next to any of the command line options listed
864 in the Options section above. If run outside of Linux containers,
865 these arguments are parsed from <filename>/proc/cmdline</filename>
866 instead.</para></footnote>:</para>
867
868 <variablelist class='kernel-commandline-options'>
869 <varlistentry>
870 <term><varname>systemd.unit=</varname></term>
871 <term><varname>rd.systemd.unit=</varname></term>
872
873 <listitem><para>Overrides the unit to activate on boot.
874 Defaults to <filename>default.target</filename>. This may be
875 used to temporarily boot into a different boot unit, for
876 example <filename>rescue.target</filename> or
877 <filename>emergency.service</filename>. See
878 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
879 for details about these units. The option prefixed with
880 <literal>rd.</literal> is honored only in the initial RAM disk
881 (initrd), while the one that is not prefixed only in the main
882 system.</para></listitem>
883 </varlistentry>
884
885 <varlistentry>
886 <term><varname>systemd.dump_core=</varname></term>
887
888 <listitem><para>Takes a boolean argument. If
889 <option>yes</option>, the systemd manager (PID 1) dumps core
890 when it crashes. Otherwise, no core dump is created. Defaults
891 to <option>yes</option>.</para></listitem>
892 </varlistentry>
893
894 <varlistentry>
895 <term><varname>systemd.crash_chvt=</varname></term>
896
897 <listitem><para>Takes a positive integer, or a boolean
898 argument. If a positive integer (in the range 1..63) is
899 specified the system manager (PID 1) will activate the specified
900 virtual terminal (VT) when it crashes. Defaults to
901 <constant>no</constant>, meaning that no such switch is
902 attempted. If set to <constant>yes</constant> the VT the
903 kernel messages are written to is selected.</para></listitem>
904 </varlistentry>
905
906 <varlistentry>
907 <term><varname>systemd.crash_shell=</varname></term>
908
909 <listitem><para>Takes a boolean argument. If
910 <option>yes</option>, the system manager (PID 1) spawns a
911 shell when it crashes, after a 10s delay. Otherwise, no shell
912 is spawned. Defaults to <option>no</option>, for security
913 reasons, as the shell is not protected by password
914 authentication.</para></listitem>
915 </varlistentry>
916
917 <varlistentry>
918 <term><varname>systemd.crash_reboot=</varname></term>
919
920 <listitem><para>Takes a boolean argument. If
921 <option>yes</option>, the system manager (PID 1) will reboot
922 the machine automatically when it crashes, after a 10s delay.
923 Otherwise, the system will hang indefinitely. Defaults to
924 <option>no</option>, in order to avoid a reboot loop. If
925 combined with <varname>systemd.crash_shell=</varname>, the
926 system is rebooted after the shell exits.</para></listitem>
927 </varlistentry>
928
929 <varlistentry>
930 <term><varname>systemd.confirm_spawn=</varname></term>
931
932 <listitem><para>Takes a boolean argument. If
933 <option>yes</option>, the system manager (PID 1) asks for
934 confirmation when spawning processes. Defaults to
935 <option>no</option>.</para></listitem>
936 </varlistentry>
937
938 <varlistentry>
939 <term><varname>systemd.show_status=</varname></term>
940
941 <listitem><para>Takes a boolean argument or the constant
942 <constant>auto</constant>. If <option>yes</option>, the
943 systemd manager (PID 1) shows terse service status updates on
944 the console during bootup. <constant>auto</constant> behaves
945 like <option>false</option> until a service fails or there is
946 a significant delay in boot. Defaults to
947 <option>yes</option>, unless <option>quiet</option> is passed
948 as kernel command line option in which case it defaults to
949 <constant>auto</constant>.</para></listitem>
950 </varlistentry>
951
952 <varlistentry>
953 <term><varname>systemd.log_target=</varname></term>
954 <term><varname>systemd.log_level=</varname></term>
955 <term><varname>systemd.log_color=</varname></term>
956 <term><varname>systemd.log_location=</varname></term>
957
958 <listitem><para>Controls log output, with the same effect as
959 the <varname>$SYSTEMD_LOG_TARGET</varname>,
960 <varname>$SYSTEMD_LOG_LEVEL</varname>,
961 <varname>$SYSTEMD_LOG_COLOR</varname>,
962 <varname>$SYSTEMD_LOG_LOCATION</varname> environment variables
963 described above.</para></listitem>
964 </varlistentry>
965
966 <varlistentry>
967 <term><varname>systemd.default_standard_output=</varname></term>
968 <term><varname>systemd.default_standard_error=</varname></term>
969 <listitem><para>Controls default standard output and error
970 output for services, with the same effect as the
971 <option>--default-standard-output=</option> and
972 <option>--default-standard-error=</option> command line
973 arguments described above, respectively.</para></listitem>
974 </varlistentry>
975
976 <varlistentry>
977 <term><varname>systemd.setenv=</varname></term>
978
979 <listitem><para>Takes a string argument in the form
980 VARIABLE=VALUE. May be used to set default environment
981 variables to add to forked child processes. May be used more
982 than once to set multiple variables.</para></listitem>
983 </varlistentry>
984
985 <varlistentry>
986 <term><varname>quiet</varname></term>
987
988 <listitem><para>Turn off status output at boot, much like
989 <varname>systemd.show_status=false</varname> would. Note that
990 this option is also read by the kernel itself and disables
991 kernel log output. Passing this option hence turns off the
992 usual output from both the system manager and the kernel.
993 </para></listitem>
994 </varlistentry>
995
996 <varlistentry>
997 <term><varname>debug</varname></term>
998
999 <listitem><para>Turn on debugging output. This is equivalent
1000 to <varname>systemd.log_level=debug</varname>. Note that this
1001 option is also read by the kernel itself and enables kernel
1002 debug output. Passing this option hence turns on the debug
1003 output from both the system manager and the
1004 kernel.</para></listitem>
1005 </varlistentry>
1006
1007 <varlistentry>
1008 <term><varname>emergency</varname></term>
1009 <term><varname>-b</varname></term>
1010
1011 <listitem><para>Boot into emergency mode. This is equivalent
1012 to <varname>systemd.unit=emergency.target</varname> and
1013 provided for compatibility reasons and to be easier to
1014 type.</para></listitem>
1015 </varlistentry>
1016
1017 <varlistentry>
1018 <term><varname>rescue</varname></term>
1019 <term><varname>single</varname></term>
1020 <term><varname>s</varname></term>
1021 <term><varname>S</varname></term>
1022 <term><varname>1</varname></term>
1023
1024 <listitem><para>Boot into rescue mode. This is equivalent to
1025 <varname>systemd.unit=rescue.target</varname> and provided for
1026 compatibility reasons and to be easier to
1027 type.</para></listitem>
1028 </varlistentry>
1029
1030 <varlistentry>
1031 <term><varname>2</varname></term>
1032 <term><varname>3</varname></term>
1033 <term><varname>4</varname></term>
1034 <term><varname>5</varname></term>
1035
1036 <listitem><para>Boot into the specified legacy SysV runlevel.
1037 These are equivalent to
1038 <varname>systemd.unit=runlevel2.target</varname>,
1039 <varname>systemd.unit=runlevel3.target</varname>,
1040 <varname>systemd.unit=runlevel4.target</varname>, and
1041 <varname>systemd.unit=runlevel5.target</varname>,
1042 respectively, and provided for compatibility reasons and to be
1043 easier to type.</para></listitem>
1044 </varlistentry>
1045
1046 <varlistentry>
1047 <term><varname>locale.LANG=</varname></term>
1048 <term><varname>locale.LANGUAGE=</varname></term>
1049 <term><varname>locale.LC_CTYPE=</varname></term>
1050 <term><varname>locale.LC_NUMERIC=</varname></term>
1051 <term><varname>locale.LC_TIME=</varname></term>
1052 <term><varname>locale.LC_COLLATE=</varname></term>
1053 <term><varname>locale.LC_MONETARY=</varname></term>
1054 <term><varname>locale.LC_MESSAGES=</varname></term>
1055 <term><varname>locale.LC_PAPER=</varname></term>
1056 <term><varname>locale.LC_NAME=</varname></term>
1057 <term><varname>locale.LC_ADDRESS=</varname></term>
1058 <term><varname>locale.LC_TELEPHONE=</varname></term>
1059 <term><varname>locale.LC_MEASUREMENT=</varname></term>
1060 <term><varname>locale.LC_IDENTIFICATION=</varname></term>
1061
1062 <listitem><para>Set the system locale to use. This overrides
1063 the settings in <filename>/etc/locale.conf</filename>. For
1064 more information see
1065 <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
1066 and
1067 <citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
1068 </para></listitem>
1069 </varlistentry>
1070 </variablelist>
1071
1072 <para>For other kernel command line parameters understood by
1073 components of the core OS, please refer to
1074 <citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
1075 </refsect1>
1076
1077 <refsect1>
1078 <title>Sockets and FIFOs</title>
1079
1080 <variablelist>
1081 <varlistentry>
1082 <term><filename>/run/systemd/notify</filename></term>
1083
1084 <listitem><para>Daemon status notification socket. This is an
1085 <constant>AF_UNIX</constant> datagram socket and is used to
1086 implement the daemon notification logic as implemented by
1087 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para></listitem>
1088
1089 </varlistentry>
1090
1091 <varlistentry>
1092 <term><filename>/run/systemd/private</filename></term>
1093
1094 <listitem><para>Used internally as communication channel
1095 between
1096 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
1097 and the systemd process. This is an
1098 <constant>AF_UNIX</constant> stream socket. This interface is
1099 private to systemd and should not be used in external
1100 projects.</para></listitem>
1101 </varlistentry>
1102
1103 <varlistentry>
1104 <term><filename>/dev/initctl</filename></term>
1105
1106 <listitem><para>Limited compatibility support for the SysV
1107 client interface, as implemented by the
1108 <filename>systemd-initctl.service</filename> unit. This is a
1109 named pipe in the file system. This interface is obsolete and
1110 should not be used in new applications.</para></listitem>
1111 </varlistentry>
1112 </variablelist>
1113 </refsect1>
1114
1115 <refsect1>
1116 <title>See Also</title>
1117 <para>
1118 The <ulink url="http://www.freedesktop.org/wiki/Software/systemd/">systemd Homepage</ulink>,
1119 <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1120 <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1121 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1122 <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1123 <citerefentry><refentrytitle>systemd-notify</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1124 <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1125 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
1126 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1127 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
1128 <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
1129 <citerefentry><refentrytitle>kernel-command-line</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1130 <citerefentry project='man-pages'><refentrytitle>bootup</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
1131 <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
1132 </para>
1133 </refsect1>
1134
1135 </refentry>