chiark / gitweb /
socket: don't allow mixing of accepting and non-accepting sockets in the same unit
[elogind.git] / man / systemd.xml
1 <?xml version='1.0'?> <!--*-nxml-*-->
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 General Public License as published by
12   the Free Software Foundation; either version 2 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   General Public License for more details.
19
20   You should have received a copy of the GNU General Public License
21   along with systemd; If not, see <http://www.gnu.org/licenses/>.
22 -->
23
24 <refentry id="systemd">
25
26         <refentryinfo>
27                 <title>systemd</title>
28                 <productname>systemd</productname>
29
30                 <authorgroup>
31                         <author>
32                                 <contrib>Developer</contrib>
33                                 <firstname>Lennart</firstname>
34                                 <surname>Poettering</surname>
35                                 <email>lennart@poettering.net</email>
36                         </author>
37                 </authorgroup>
38         </refentryinfo>
39
40         <refmeta>
41                 <refentrytitle>systemd</refentrytitle>
42                 <manvolnum>1</manvolnum>
43         </refmeta>
44
45         <refnamediv>
46                 <refname>systemd</refname>
47                 <refname>init</refname>
48                 <refpurpose>systemd System and Session Manager</refpurpose>
49         </refnamediv>
50
51         <refsynopsisdiv>
52                 <cmdsynopsis>
53                         <command>systemd <arg choice="opt" rep="repeat">OPTIONS</arg></command>
54                 </cmdsynopsis>
55                 <cmdsynopsis>
56                         <command>init <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="req">COMMAND</arg></command>
57                 </cmdsynopsis>
58         </refsynopsisdiv>
59
60         <refsect1>
61                 <title>Description</title>
62
63                 <para>systemd is a system and session manager for
64                 Linux operating systems. When run as first process on
65                 boot (as PID 1), it acts as init system that brings
66                 up and maintains userspace services.</para>
67
68                 <para>For compatibility with SysV, if systemd is called
69                 as <command>init</command> and a PID that is not
70                 1, it will execute <command>telinit</command> and pass
71                 all command line arguments unmodified. That means
72                 <command>init</command> and <command>telinit</command>
73                 are mostly equivalent when invoked from normal login sessions. See
74                 <citerefentry><refentrytitle>telinit</refentrytitle><manvolnum>8</manvolnum></citerefentry>
75                 for more information.</para>
76
77                 <para>When run as system instance, systemd interprets
78                 the configuration file
79                 <filename>system.conf</filename>, otherwise
80                 <filename>session.conf</filename>. See
81                 <citerefentry><refentrytitle>systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
82                 for more information.</para>
83         </refsect1>
84
85         <refsect1>
86                 <title>Options</title>
87
88                 <para>The following options are understood:</para>
89
90                 <variablelist>
91                         <varlistentry>
92                                 <term><option>-h</option></term>
93                                 <term><option>--help</option></term>
94
95                                 <listitem><para>Prints a short help
96                                 text and exits.</para></listitem>
97                         </varlistentry>
98                         <varlistentry>
99                                 <term><option>--test</option></term>
100
101                                 <listitem><para>Determine startup
102                                 sequence, dump it and exit. This is an
103                                 option useful for debugging
104                                 only.</para></listitem>
105                         </varlistentry>
106                         <varlistentry>
107                                 <term><option>--dump-configuration-items</option></term>
108
109                                 <listitem><para>Dump understood unit
110                                 configuration items. This outputs a
111                                 terse but complete list of
112                                 configuration items understood in unit
113                                 definition files.</para></listitem>
114                         </varlistentry>
115                         <varlistentry>
116                                 <term><option>--introspect=</option></term>
117
118                                 <listitem><para>Extract D-Bus
119                                 interface introspection data. This is
120                                 mostly useful at install time
121                                 to generate data suitable for the
122                                 D-Bus interfaces
123                                 repository. Optionally the interface
124                                 name for the introspection data may be
125                                 specified. If omitted, the
126                                 introspection data for all interfaces
127                                 is dumped.</para></listitem>
128                         </varlistentry>
129                         <varlistentry>
130                                 <term><option>--unit=</option></term>
131
132                                 <listitem><para>Set default unit to
133                                 activate on startup. If not specified
134                                 defaults to
135                                 <filename>default.target</filename>.</para></listitem>
136                         </varlistentry>
137                         <varlistentry>
138                                 <term><option>--system</option></term>
139                                 <term><option>--session</option></term>
140
141                                 <listitem><para>Tell systemd to run a
142                                 system instance (resp. session
143                                 instance), even if the process ID is
144                                 not 1 (resp. is 1), i.e. system is not
145                                 (resp. is) run as init process.
146                                 Normally it should not be necessary to
147                                 pass these options, as systemd
148                                 automatically detects the mode it is
149                                 started in. These options are hence of
150                                 little use except for
151                                 debugging.</para></listitem>
152                         </varlistentry>
153                         <varlistentry>
154                                 <term><option>--dump-core</option></term>
155
156                                 <listitem><para>Dump core on crash. This switch has no effect when run as session instance.</para></listitem>
157                         </varlistentry>
158                         <varlistentry>
159                                 <term><option>--crash-shell</option></term>
160
161                                 <listitem><para>Run shell on crash. This switch has no effect when run as session instance.</para></listitem>
162                         </varlistentry>
163                         <varlistentry>
164                                 <term><option>--confirm-spawn</option></term>
165
166                                 <listitem><para>Ask for confirmation when spawning processes. This switch has no effect when run as session instance.</para></listitem>
167                         </varlistentry>
168                         <varlistentry>
169                                 <term><option>--show-status</option></term>
170
171                                 <listitem><para>Show terse service status information while booting. This switch has no effect when run as session instance.</para></listitem>
172                         </varlistentry>
173                         <varlistentry>
174                                 <term><option>--log-target=</option></term>
175
176                                 <listitem><para>Set log
177                                 target. Argument must be one of
178                                 <option>console</option>,
179                                 <option>syslog</option>,
180                                 <option>kmsg</option>,
181                                 <option>syslog-or-kmsg</option>,
182                                 <option>null</option>.</para></listitem>
183                         </varlistentry>
184                         <varlistentry>
185                                 <term><option>--log-level=</option></term>
186
187                                 <listitem><para>Set log level. As
188                                 argument this accepts a numerical log
189                                 level or the well-known <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
190                                 symbolic names (lowercase):
191                                 <option>emerg</option>,
192                                 <option>alert</option>,
193                                 <option>crit</option>,
194                                 <option>err</option>,
195                                 <option>warning</option>,
196                                 <option>notice</option>,
197                                 <option>info</option>,
198                                 <option>debug</option>.</para></listitem>
199                         </varlistentry>
200                         <varlistentry>
201                                 <term><option>--log-color=</option></term>
202
203                                 <listitem><para>Highlight important
204                                 log messages. Argument is a boolean
205                                 value. If the argument is omitted it
206                                 defaults to
207                                 <option>true</option>.</para></listitem>
208                         </varlistentry>
209                         <varlistentry>
210                                 <term><option>--log-location=</option></term>
211
212                                 <listitem><para>Include code location
213                                 in log messages. This is mostly
214                                 relevant for debugging
215                                 purposes. Argument is a boolean
216                                 value. If the argument is omitted
217                                 it defaults to
218                                 <option>true</option>.</para></listitem>
219                         </varlistentry>
220                 </variablelist>
221         </refsect1>
222
223         <refsect1>
224                 <title>Concepts</title>
225
226                 <para>systemd provides a dependency system between
227                 various entities called "units". Units encapsulate
228                 various objects that are relevant for system boot-up
229                 and maintainance. The majority of units are configured
230                 in unit configuration files, whose syntax and basic
231                 set of options is described in
232                 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
233                 however some are created automatically from other
234                 configuration or dynamically from system state. Units
235                 may be active (meaning started, bound, plugged in, ...
236                 depending on the unit type), or inactive (meaning
237                 stopped, unbound, unplugged, ...), as well as in the
238                 process of being activated or deactivated,
239                 i.e. between the two states. The following unit types
240                 are available:</para>
241
242                 <orderedlist>
243                         <listitem><para>Service units, which control
244                         daemons and the processes they consist of. For
245                         details see
246                         <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
247
248                         <listitem><para>Socket units, which
249                         encapsulate local IPC or network sockets in
250                         the system, useful for socket-based
251                         activation. For details about socket units see
252                         <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
253                         for details on socket-based activation and
254                         other forms of activation, see
255                         <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para></listitem>
256
257                         <listitem><para>Target units are useful to
258                         group units, or provide well-known
259                         synchronization points during boot-up, see
260                         <citerefentry><refentrytitle>systemd.target</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
261
262                         <listitem><para>Device units expose kernel
263                         devices in systemd and may be used to
264                         implement device-based activation. For details
265                         see
266                         <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
267
268                         <listitem><para>Mount units control mount
269                         points in the file system, for details see
270                         <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
271
272                         <listitem><para>Automount units provide
273                         automount capabilities, for on-demand mounting
274                         of file systems as well as parallelized
275                         boot-up. See
276                         <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
277
278                         <listitem><para>Snapshot units can be used to
279                         temporarily save the state of the set of
280                         systemd units, which later may be restored by
281                         activating the saved snapshot unit. For more
282                         information see
283                         <citerefentry><refentrytitle>systemd.snapshot</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
284
285                         <listitem><para>Timer units are useful for
286                         triggering activation of other units based on
287                         timers. You may find details in
288                         <citerefentry><refentrytitle>systemd.timer</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
289
290                         <listitem><para>Swap units are very similar to
291                         mount units and encapsulated memory swap
292                         partitions or files of the operating
293                         systemd. They are described in <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
294
295                         <listitem><para>Path units may be used
296                         to activate other services when file system
297                         objects change or are modified. See
298                         <citerefentry><refentrytitle>systemd.path</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para></listitem>
299
300                 </orderedlist>
301
302                 <para>Units are named as their configuration
303                 files. Some units have special semantics. A detailed
304                 list you may find in
305                 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
306
307                 <para>On boot systemd activates the target unit
308                 <filename>default.target</filename> whose job is to
309                 activate on-boot services and other on-boot units by
310                 pulling them in via dependencies. Usually the unit
311                 name is just an alias (symlink) for either
312                 <filename>graphical.target</filename> (for
313                 fully-featured boots into the UI) or
314                 <filename>multi-user.target</filename> (for limited
315                 console-only boots for use in embedded or server
316                 environments, or similar; a subset of
317                 graphical.target). However it is at the discretion of
318                 the administrator to configure it as an alias to any
319                 other target unit. See
320                 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
321                 for details about these target units.</para>
322
323                 <para>Processes systemd spawns are placed in
324                 individual Linux control groups named after the unit
325                 which they belong to in the private systemd
326                 hierarchy. (see <ulink
327                 url="http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt">cgroups.txt</ulink>
328                 for more information about control groups, or short
329                 "cgroups"). systemd uses this to effectively keep
330                 track of processes. Control group information is
331                 maintained in the kernel, and is accessible via the
332                 file system hierarchy (beneath
333                 <filename>/cgroup/systemd/</filename>), or in tools
334                 such as
335                 <citerefentry><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry>
336                 (<command>ps xawf -eo pid,user,cgroup,args</command>
337                 is particularly useful to list all processes and the
338                 systemd units they belong to.).</para>
339
340                 <para>systemd is compatible with the SysV init system
341                 to a large degree: SysV init scripts are supported and
342                 simply read as an alternative (though limited)
343                 configuration file format. The SysV
344                 <filename>/dev/initctl</filename> interface is
345                 provided, and compatibility implementations of the
346                 various SysV client tools are available. In addition to
347                 that, various established Unix functionality such as
348                 <filename>/etc/fstab</filename> or the
349                 <filename>utmp</filename> database are
350                 supported.</para>
351
352                 <para>systemd has a minimal transaction system: if a
353                 unit is requested to start up or shut down it will add
354                 it and all its dependencies to a temporary
355                 transaction. Then, it will verify if the transaction
356                 is consistent (i.e. whether the ordering of all units
357                 is cycle-free). If it is not, systemd will try to fix
358                 it up, and removes non-essential jobs from the
359                 transaction that might remove the loop. Also, systemd
360                 tries to suppress non-essential jobs in the
361                 transaction that would stop a running service. Finally
362                 it is checked whether the jobs of the transaction
363                 contradict jobs that have already been queued, and
364                 optionally the transaction is aborted then. If all
365                 worked out and the transaction is consistent and
366                 minimized in its impact it is merged with all already
367                 outstanding jobs and added to the run
368                 queue. Effectively this means that before executing a
369                 requested operation, systemd will verify that it makes
370                 sense, fixing it if possible, and only failing if it
371                 really cannot work.</para>
372
373                 <para>Systemd contains native implementations of
374                 various tasks that need to be executed as part of the
375                 boot process. For example, it sets the host name or
376                 configures the loopback network device. It also sets
377                 up and mounts various API file systems, such as
378                 <filename>/sys</filename> or
379                 <filename>/proc</filename>.</para>
380
381                 <para>For more information about the concepts and
382                 ideas behind systemd please refer to the <ulink
383                 url="http://0pointer.de/blog/projects/systemd.html">Original
384                 Design Document</ulink>.</para>
385         </refsect1>
386
387         <refsect1>
388                 <title>Directories</title>
389
390                 <variablelist>
391                         <varlistentry>
392                                 <term>System unit directories</term>
393
394                                 <listitem><para>The systemd system
395                                 manager reads unit configuration from
396                                 various directories. Packages that
397                                 want to install unit files shall place
398                                 them in the directory returned by
399                                 <command>pkg-config systemd
400                                 --variable=systemdsystemunitdir</command>. Other
401                                 directories checked are
402                                 <filename>/usr/local/share/systemd/system</filename>
403                                 and
404                                 <filename>/usr/share/systemd/system</filename>. User
405                                 configuration always takes
406                                 precedence. <command>pkg-config
407                                 systemd
408                                 --variable=systemdsystemconfdir</command>
409                                 returns the path of the system
410                                 configuration directory. Packages
411                                 should alter the content of these directories
412                                 only with the
413                                 <citerefentry><refentrytitle>systemd-install</refentrytitle><manvolnum>1</manvolnum></citerefentry>
414                                 tool.</para></listitem>
415                         </varlistentry>
416                 </variablelist>
417
418                 <variablelist>
419                         <varlistentry>
420                                 <term>Session unit directories</term>
421
422                                 <listitem><para>Similar rules apply
423                                 for the session unit
424                                 directories. However, here the <ulink
425                                 url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
426                                 Base Directory specification</ulink>
427                                 is followed to find
428                                 units. Applications should place their
429                                 unit files in the directory returned
430                                 by <command>pkg-config systemd
431                                 --variable=systemdsessionunitdir</command>. Global
432                                 configuration is done in the
433                                 directory reported by
434                                 <command>pkg-config systemd
435                                 --variable=systemdsessionconfdir</command>. The
436                                 <citerefentry><refentrytitle>systemd-install</refentrytitle><manvolnum>1</manvolnum></citerefentry>
437                                 tool can handle both global (i.e. for
438                                 all users) and private (for one user)
439                                 enabling/disabling of
440                                 units.</para></listitem>
441                         </varlistentry>
442                 </variablelist>
443
444                 <variablelist>
445                         <varlistentry>
446                                 <term>SysV init scripts directory</term>
447
448                                 <listitem><para>The location of the
449                                 SysV init script directory varies
450                                 between distributions. If systemd
451                                 cannot find a native unit file for a
452                                 requested service, it will look for a
453                                 SysV init script of the same name
454                                 (with the
455                                 <filename>.service</filename> suffix
456                                 removed).</para></listitem>
457                         </varlistentry>
458                 </variablelist>
459
460                 <variablelist>
461                         <varlistentry>
462                                 <term>SysV runlevel link farm directory</term>
463
464                                 <listitem><para>The location of the
465                                 SysV runlevel link farm directory
466                                 varies between distributions. systemd
467                                 will take the link farm into account
468                                 when figuring out whether a service
469                                 shall be enabled. Note that a service
470                                 unit with a native unit configuration
471                                 file cannot be started by activating it
472                                 in the SysV runlevel link
473                                 farm.</para></listitem>
474                         </varlistentry>
475                 </variablelist>
476         </refsect1>
477
478         <refsect1>
479                 <title>Signals</title>
480
481                 <variablelist>
482                         <varlistentry>
483                                 <term>SIGTERM</term>
484
485                                 <listitem><para>Upon receiving this
486                                 signal the systemd system manager
487                                 serializes its state, reexecutes
488                                 itself and deserializes the saved
489                                 state again. This is mostly equivalent
490                                 to <command>systemctl
491                                 daemon-reexec</command>.</para>
492
493                                 <para>systemd session managers will
494                                 start the
495                                 <filename>exit.target</filename> unit
496                                 when this signal is received. This is
497                                 mostly equivalent to
498                                 <command>systemctl --session start
499                                 exit.target</command>.</para></listitem>
500                         </varlistentry>
501
502                         <varlistentry>
503                                 <term>SIGINT</term>
504
505                                 <listitem><para>Upon receiving this
506                                 signal the systemd system manager will
507                                 start the
508                                 <filename>ctrl-alt-del.target</filename> unit. This
509                                 is mostly equivalent to
510                                 <command>systemctl start
511                                 ctl-alt-del.target</command>.</para>
512
513                                 <para>systemd session managers
514                                 treat this signal the same way as
515                                 SIGTERM.</para></listitem>
516                         </varlistentry>
517
518                         <varlistentry>
519                                 <term>SIGWINCH</term>
520
521                                 <listitem><para>When this signal is
522                                 received the systemd system manager
523                                 will start the
524                                 <filename>kbrequest.target</filename>
525                                 unit. This is mostly equivalent to
526                                 <command>systemctl start
527                                 kbrequest.target</command>.</para>
528
529                                 <para>This signal is ignored by
530                                 systemd session
531                                 managers.</para></listitem>
532                         </varlistentry>
533
534                         <varlistentry>
535                                 <term>SIGPWR</term>
536
537                                 <listitem><para>When this signal is
538                                 received the systemd manager
539                                 will start the
540                                 <filename>sigpwr.target</filename>
541                                 unit. This is mostly equivalent to
542                                 <command>systemctl start
543                                 sigpwr.target</command>.</para></listitem>
544                         </varlistentry>
545
546                         <varlistentry>
547                                 <term>SIGUSR1</term>
548
549                                 <listitem><para>When this signal is
550                                 received the systemd manager will try
551                                 to reconnect to the D-Bus
552                                 bus.</para></listitem>
553                         </varlistentry>
554
555                         <varlistentry>
556                                 <term>SIGUSR2</term>
557
558                                 <listitem><para>When this signal is
559                                 received the systemd manager will log
560                                 its complete state in human readable
561                                 form. The data logged is the same as
562                                 printed by <command>systemctl
563                                 dump</command>.</para></listitem>
564                         </varlistentry>
565
566                         <varlistentry>
567                                 <term>SIGHUP</term>
568
569                                 <listitem><para>Reloads the complete
570                                 daemon configuration. This is mostly
571                                 equivalent to <command>systemctl
572                                 daemon-reload</command>.</para></listitem>
573                         </varlistentry>
574
575                         <varlistentry>
576                                 <term>SIGRTMIN+0</term>
577
578                                 <listitem><para>Enters default mode, starts the
579                                 <filename>default.target</filename>
580                                 unit. This is mostly equivalent to
581                                 <command>systemctl start
582                                 default.target</command>.</para></listitem>
583                         </varlistentry>
584
585                         <varlistentry>
586                                 <term>SIGRTMIN+1</term>
587
588                                 <listitem><para>Enters rescue mode,
589                                 starts the
590                                 <filename>rescue.target</filename>
591                                 unit. This is mostly equivalent to
592                                 <command>systemctl isolate
593                                 rescue.target</command>.</para></listitem>
594                         </varlistentry>
595
596                         <varlistentry>
597                                 <term>SIGRTMIN+2</term>
598
599                                 <listitem><para>Enters emergency mode,
600                                 starts the
601                                 <filename>emergency.service</filename>
602                                 unit. This is mostly equivalent to
603                                 <command>systemctl isolate
604                                 emergency.service</command>.</para></listitem>
605                         </varlistentry>
606
607                         <varlistentry>
608                                 <term>SIGRTMIN+3</term>
609
610                                 <listitem><para>Halts the machine,
611                                 starts the
612                                 <filename>halt.target</filename>
613                                 unit. This is mostly equivalent to
614                                 <command>systemctl start
615                                 halt.target</command>.</para></listitem>
616                         </varlistentry>
617
618                         <varlistentry>
619                                 <term>SIGRTMIN+4</term>
620
621                                 <listitem><para>Powers off the machine,
622                                 starts the
623                                 <filename>poweroff.target</filename>
624                                 unit. This is mostly equivalent to
625                                 <command>systemctl start
626                                 poweroff.target</command>.</para></listitem>
627                         </varlistentry>
628
629                         <varlistentry>
630                                 <term>SIGRTMIN+5</term>
631
632                                 <listitem><para>Reboots the machine,
633                                 starts the
634                                 <filename>reboot.target</filename>
635                                 unit. This is mostly equivalent to
636                                 <command>systemctl start
637                                 reboot.target</command>.</para></listitem>
638                         </varlistentry>
639                 </variablelist>
640         </refsect1>
641
642         <refsect1>
643                 <title>Environment</title>
644
645                 <variablelist>
646                         <varlistentry>
647                                 <term><varname>$SYSTEMD_LOG_LEVEL</varname></term>
648                                 <listitem><para>systemd reads the
649                                 log level from this environment
650                                 variable. This can be overridden with
651                                 <option>--log-level=</option>.</para></listitem>
652                         </varlistentry>
653
654                         <varlistentry>
655                                 <term><varname>$SYSTEMD_LOG_TARGET</varname></term>
656                                 <listitem><para>systemd reads the
657                                 log target from this environment
658                                 variable. This can be overridden with
659                                 <option>--log-target=</option>.</para></listitem>
660                         </varlistentry>
661
662                         <varlistentry>
663                                 <term><varname>$SYSTEMD_LOG_COLOR</varname></term>
664                                 <listitem><para>Controls whether
665                                 systemd highlights important log
666                                 messages. This can be overridden with
667                                 <option>--log-color=</option>.</para></listitem>
668                         </varlistentry>
669
670                         <varlistentry>
671                                 <term><varname>$SYSTEMD_LOG_LOCATION</varname></term>
672                                 <listitem><para>Controls whether
673                                 systemd prints the code location along
674                                 with log messages. This can be
675                                 overridden with
676                                 <option>--log-location=</option>.</para></listitem>
677                         </varlistentry>
678
679                         <varlistentry>
680                                 <term><varname>$XDG_CONFIG_HOME</varname></term>
681                                 <term><varname>$XDG_CONFIG_DIRS</varname></term>
682                                 <term><varname>$XDG_DATA_HOME</varname></term>
683                                 <term><varname>$XDG_DATA_DIRS</varname></term>
684
685                                 <listitem><para>The systemd session
686                                 manager uses these variables in
687                                 accordance to the <ulink
688                                 url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
689                                 Base Directory specification</ulink>
690                                 to find its configuration.</para></listitem>
691                         </varlistentry>
692
693                         <varlistentry>
694                                 <term><varname>$SYSTEMD_UNIT_PATH</varname></term>
695
696                                 <listitem><para>Controls where systemd
697                                 looks for unit
698                                 files.</para></listitem>
699                         </varlistentry>
700
701                         <varlistentry>
702                                 <term><varname>$SYSTEMD_SYSVINIT_PATH</varname></term>
703
704                                 <listitem><para>Controls where systemd
705                                 looks for SysV init scripts.</para></listitem>
706                         </varlistentry>
707
708                         <varlistentry>
709                                 <term><varname>$SYSTEMD_SYSVRCND_PATH</varname></term>
710
711                                 <listitem><para>Controls where systemd
712                                 looks for SysV init script runlevel link
713                                 farms.</para></listitem>
714                         </varlistentry>
715
716                         <varlistentry>
717                                 <term><varname>$LISTEN_PID</varname></term>
718                                 <term><varname>$LISTEN_FDS</varname></term>
719
720                                 <listitem><para>Set by systemd for
721                                 supervised processes during
722                                 socket-based activation. See
723                                 <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
724                                 for more information.
725                                 </para></listitem>
726                         </varlistentry>
727
728                         <varlistentry>
729                                 <term><varname>$NOTIFY_SOCKET</varname></term>
730
731                                 <listitem><para>Set by systemd for
732                                 supervised processes for status and
733                                 start-up completion notification. See
734                                 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
735                                 for more information.
736                                 </para></listitem>
737                         </varlistentry>
738                 </variablelist>
739         </refsect1>
740
741         <refsect1>
742                 <title>Kernel Command Line</title>
743
744                 <para>When run as system instance systemd parses a few kernel command line arguments:</para>
745
746                 <variablelist>
747                         <varlistentry>
748                                 <term><varname>systemd.unit=</varname></term>
749
750                                 <listitem><para>Overrides the unit to
751                                 activate on boot. Defaults to
752                                 <filename>default.target</filename>. This
753                                 may be used to temporarily boot into a
754                                 different boot unit, for example
755                                 <filename>rescue.target</filename> or
756                                 <filename>emergency.service</filename>. See
757                                 <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>
758                                 for details about these
759                                 units.</para></listitem>
760                         </varlistentry>
761
762                         <varlistentry>
763                                 <term><varname>systemd.log_target=</varname></term>
764                                 <term><varname>systemd.log_level=</varname></term>
765                                 <term><varname>systemd.log_color=</varname></term>
766                                 <term><varname>systemd.log_location=</varname></term>
767
768                                 <listitem><para>Controls log output,
769                                 with the same effect as the
770                                 <varname>$SYSTEMD_LOG_TARGET</varname>, <varname>$SYSTEMD_LOG_LEVEL</varname>, <varname>$SYSTEMD_LOG_COLOR</varname>, <varname>$SYSTEMD_LOG_LOCATION</varname>
771                                 environment variables described above.</para></listitem>
772                         </varlistentry>
773
774                         <varlistentry>
775                                 <term><varname>systemd.dump_core=</varname></term>
776
777                                 <listitem><para>Takes a boolean
778                                 argument. If <option>true</option>
779                                 systemd dumps core when it
780                                 crashes. Otherwise no core dump is
781                                 created. Defaults to
782                                 <option>true</option>.</para></listitem>
783                         </varlistentry>
784
785                         <varlistentry>
786                                 <term><varname>systemd.crash_shell=</varname></term>
787
788                                 <listitem><para>Takes a boolean
789                                 argument. If <option>true</option>
790                                 systemd spawns a shell when it
791                                 crashes. Otherwise no core dump is
792                                 created. Defaults to
793                                 <option>false</option>, for security
794                                 reasons, as the shell is not protected
795                                 by any password
796                                 authentication.</para></listitem>
797                         </varlistentry>
798
799                         <varlistentry>
800                                 <term><varname>systemd.crash_chvt=</varname></term>
801
802                                 <listitem><para>Takes an integer
803                                 argument. If positive systemd
804                                 activates the specified virtual
805                                 terminal when it crashes. Defaults to
806                                 <literal>-1</literal>.</para></listitem>
807                         </varlistentry>
808
809                         <varlistentry>
810                                 <term><varname>systemd.show_status=</varname></term>
811
812                                 <listitem><para>Takes a boolean
813                                 argument. If <option>true</option>
814                                 shows terse service status updates on
815                                 the console during bootup. Defaults to
816                                 <option>true</option>.</para></listitem>
817                         </varlistentry>
818
819                 </variablelist>
820         </refsect1>
821
822         <refsect1>
823                 <title>Sockets and FIFOs</title>
824
825                 <variablelist>
826                         <varlistentry>
827                                 <term><filename>@/org/freedesktop/systemd1/notify</filename></term>
828
829                                 <listitem><para>Daemon status
830                                 notification socket. This is an AF_UNIX
831                                 datagram socket in the Linux abstract
832                                 namespace, and is used to implement
833                                 the daemon notification logic as
834                                 implemented by
835                                 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para></listitem>
836
837                         </varlistentry>
838
839                         <varlistentry>
840                                 <term><filename>@/org/freedesktop/systemd1/logger</filename></term>
841
842                                 <listitem><para>Used internally by the
843                                 <filename>systemd-logger.service</filename>
844                                 unit to connect STDOUT and/or STDERR
845                                 of spawned processes to
846                                 <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
847                                 or the kernel log buffer. This is an
848                                 AF_UNIX stream socket in the Linux
849                                 abstract namespace.</para></listitem>
850                         </varlistentry>
851
852                         <varlistentry>
853                                 <term><filename>@/org/freedesktop/systemd1/private</filename></term>
854
855                                 <listitem><para>Used internally as
856                                 communication channel between
857                                 <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
858                                 and the systemd process. This is an
859                                 AF_UNIX stream socket in the Linux
860                                 abstract namespace. This interface is
861                                 private to systemd and should not be
862                                 used in external
863                                 projects.</para></listitem>
864                         </varlistentry>
865
866                         <varlistentry>
867                                 <term><filename>/dev/initctl</filename></term>
868
869                                 <listitem><para>Limited compatibility
870                                 support for the SysV client interface,
871                                 as implemented by the
872                                 <filename>systemd-initctl.service</filename>
873                                 unit. This is a named pipe in the file
874                                 system. This interface is obsolete and
875                                 should not be used in new
876                                 applications.</para></listitem>
877                         </varlistentry>
878                 </variablelist>
879         </refsect1>
880
881         <refsect1>
882                 <title>See Also</title>
883                 <para>
884                         <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
885                         <citerefentry><refentrytitle>systemadm</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
886                         <citerefentry><refentrytitle>systemd-install</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
887                         <citerefentry><refentrytitle>systemd-notify</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
888                         <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
889                         <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
890                         <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
891                         <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
892                         <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
893                 </para>
894         </refsect1>
895
896 </refentry>