]> git.ipfire.org Git - thirdparty/systemd.git/blob - man/org.freedesktop.systemd1.xml
Merge pull request #15478 from DaanDeMeyer/dbus-api-docs-fixes
[thirdparty/systemd.git] / man / org.freedesktop.systemd1.xml
1 <?xml version='1.0'?>
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" >
4 <!-- SPDX-License-Identifier: LGPL-2.1+ -->
5
6 <refentry id="org.freedesktop.systemd1" xmlns:xi="http://www.w3.org/2001/XInclude">
7 <refentryinfo>
8 <title>org.freedesktop.systemd1</title>
9 <productname>systemd</productname>
10 </refentryinfo>
11
12 <refmeta>
13 <refentrytitle>org.freedesktop.systemd1</refentrytitle>
14 <manvolnum>5</manvolnum>
15 </refmeta>
16
17 <refnamediv>
18 <refname>org.freedesktop.systemd1</refname>
19 <refpurpose>The D-Bus interface of systemd</refpurpose>
20 </refnamediv>
21
22 <refsect1>
23 <title>Introduction</title>
24
25 <para>
26 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> and its
27 auxiliary daemons expose a number of APIs over D-Bus. This page only describes the various APIs exposed by the
28 system and service manager itself. It does not cover the auxiliary daemons.
29 </para>
30
31 <para>The service manager exposes a number of objects on the bus: one
32 <interfacename>Manager</interfacename> object as a central entry point for clients along with individual objects
33 for each unit and for each queued job. The unit objects each implement a generic
34 <interfacename>Unit</interfacename> interface as well as a type-specific interface. For example, service units
35 implement both <interfacename>org.freedesktop.systemd1.Unit</interfacename> and
36 <interfacename>org.freedesktop.system1.Service</interfacename>. The manager object can list
37 unit and job objects or directly convert a unit name or job id into a bus path of the corresponding
38 D-Bus object.</para>
39
40 <para>Properties exposing time values are usually encoded in microseconds (usec) on the bus, even if
41 their corresponding settings in the unit files are in seconds.</para>
42
43 <para>In contrast to most of the other services of the systemd suite, PID 1 does not use PolicyKit for
44 controlling access to privileged operations, but relies exclusively on the low-level D-Bus policy
45 language. (This is done in order to avoid a cyclic dependency between PolicyKit and systemd/PID 1.) This
46 means that sensitive operations exposed by PID 1 on the bus are generally not available to unprivileged
47 processes directly. However, some operations (such as shutdown/reboot/suspend) are made available through the D-Bus
48 API of logind, see
49 <citerefentry><refentrytitle>org.freedesktop.login1</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
50 </para>
51 </refsect1>
52
53 <refsect1>
54 <title>The Manager Object</title>
55
56 <para>The main entry point object is available on the fixed
57 <constant>/org/freedesktop/systemd1</constant> object path:</para>
58
59 <programlisting>
60 $ gdbus introspect --system \
61 --dest org.freedesktop.systemd1 \
62 --object-path /org/freedesktop/systemd1
63
64 node /org/freedesktop/systemd1 {
65 interface org.freedesktop.systemd1.Manager {
66 methods:
67 GetUnit(in s name,
68 out o unit);
69 GetUnitByPID(in u pid,
70 out o unit);
71 LoadUnit(in s name,
72 out o unit);
73 StartUnit(in s name,
74 in s mode,
75 out o job);
76 StartUnitReplace(in s old_unit,
77 in s new_unit,
78 in s mode,
79 out o job);
80 StopUnit(in s name,
81 in s mode,
82 out o job);
83 ReloadUnit(in s name,
84 in s mode,
85 out o job);
86 RestartUnit(in s name,
87 in s mode,
88 out o job);
89 TryRestartUnit(in s name,
90 in s mode,
91 out o job);
92 ReloadOrRestartUnit(in s name,
93 in s mode,
94 out o job);
95 ReloadOrTryRestartUnit(in s name,
96 in s mode,
97 out o job);
98 KillUnit(in s name,
99 in s who,
100 in i signal);
101 ResetFailedUnit(in s name);
102 GetJob(in u id,
103 out o job);
104 CancelJob(in u id);
105 ClearJobs();
106 ResetFailed();
107 ListUnits(out a(ssssssouso) units);
108 ListJobs(out a(usssoo) jobs);
109 Subscribe();
110 Unsubscribe();
111 Reload();
112 Reexecute();
113 Exit();
114 Reboot();
115 PowerOff();
116 Halt();
117 KExec();
118 SwitchRoot(in s new_root,
119 in s init);
120 SetEnvironment(in as names);
121 UnsetEnvironment(in as names);
122 UnsetAndSetEnvironment(in as unset,
123 in as set);
124 ListUnitFiles(out a(ss) files);
125 GetUnitFileState(in s file,
126 out s state);
127 EnableUnitFiles(in as files,
128 in b runtime,
129 in b force,
130 out b carries_install_info,
131 out a(sss) changes);
132 DisableUnitFiles(in as files,
133 in b runtime,
134 out a(sss) changes);
135 ReenableUnitFiles(in as files,
136 in b runtime,
137 in b force,
138 out b carries_install_info,
139 out a(sss) changes);
140 LinkUnitFiles(in as files,
141 in b runtime,
142 in b force,
143 out a(sss) changes);
144 PresetUnitFiles(in as files,
145 in b runtime,
146 in b force,
147 out b carries_install_info,
148 out a(sss) changes);
149 MaskUnitFiles(in as files,
150 in b runtime,
151 in b force,
152 out a(sss) changes);
153 UnmaskUnitFiles(in as files,
154 in b runtime,
155 out a(sss) changes);
156 SetDefaultTarget(in as files,
157 out a(sss) changes);
158 GetDefaultTarget(out s name);
159 SetUnitProperties(in s name,
160 in b runtime,
161 in a(sv) properties);
162 StartTransientUnit(in s name,
163 in s mode,
164 in a(sv) properties,
165 in a(sa(sv)) aux,
166 out o job);
167 signals:
168 UnitNew(s id,
169 o unit);
170 UnitRemoved(s id,
171 o unit);
172 JobNew(u id,
173 o job,
174 s unit);
175 JobRemoved(u id,
176 o job,
177 s unit,
178 s result);
179 StartupFinished(t firmware,
180 t loader,
181 t kernel,
182 t initrd,
183 t userspace,
184 t total);
185 UnitFilesChanged();
186 Reloading(b active);
187 properties:
188 readonly s Version = 'systemd 205';
189 readonly s Features = '+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ';
190 readonly s Tainted = '';
191 readonly t FirmwareTimestamp = 0;
192 readonly t FirmwareTimestampMonotonic = 0;
193 readonly t LoaderTimestamp = 0;
194 readonly t LoaderTimestampMonotonic = 0;
195 readonly t KernelTimestamp = 0;
196 readonly t KernelTimestampMonotonic = 0;
197 readonly t InitRDTimestamp = 0;
198 readonly t InitRDTimestampMonotonic = 0;
199 readonly t UserspaceTimestamp = 1373892700771932;
200 readonly t UserspaceTimestampMonotonic = 347348267507;
201 readonly t FinishTimestamp = 1373892717621078;
202 readonly t FinishTimestampMonotonic = 347365116654;
203 readonly t GeneratorsStartTimestamp = 1374345509428734;
204 readonly t GeneratorsStartTimestampMonotonic = 500549330609;
205 readonly t GeneratorsFinishTimestamp = 1374345509562375;
206 readonly t GeneratorsFinishTimestampMonotonic = 500549464250;
207 readonly t UnitsLoadStartTimestamp = 1374345509562782;
208 readonly t UnitsLoadStartTimestampMonotonic = 500549464657;
209 readonly t UnitsLoadFinishTimestamp = 1374345509652212;
210 readonly t UnitsLoadFinishTimestampMonotonic = 500549554088;
211 readonly t SecurityStartTimestamp = 1374345509562782;
212 readonly t SecurityStartTimestampMonotonic = 500549464657;
213 readonly t SecurityFinishTimestamp = 1374345509652212;
214 readonly t SecurityFinishTimestampMonotonic = 500549554088;
215 readwrite s LogLevel = 'info';
216 readwrite s LogTarget = 'journal';
217 readonly u NNames = 100;
218 readonly u NJobs = 0;
219 readonly u NInstalledJobs = 266;
220 readonly u NFailedJobs = 4;
221 readonly d Progress = 1.0;
222 readonly as Environment = ['PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin', 'LANG=C'];
223 readonly b ConfirmSpawn = false;
224 readonly b ShowStatus = true;
225 readonly as UnitPath = ['/etc/systemd/system', '/run/systemd/system', '/run/systemd/generator', '/usr/local/lib/systemd/system', '/usr/lib/systemd/system'];
226 readonly s DefaultStandardOutput = 'journal';
227 readonly s DefaultStandardError = 'inherit';
228 readwrite t RuntimeWatchdogUSec = 0;
229 readwrite t ShutdownWatchdogUSec = 600000000;
230 readonly s Virtualization = '';
231 readonly s Architecture = 'x86-64';
232 };
233 interface org.freedesktop.DBus.Properties {
234 ...
235 };
236 interface org.freedesktop.DBus.Peer {
237 ...
238 };
239 interface org.freedesktop.DBus.Introspectable {
240 ...
241 };
242 };
243 </programlisting>
244
245 <refsect2>
246 <title>Methods</title>
247
248 <para>Note that many of the methods exist twice: once on the <interfacename>Manager</interfacename>
249 object and once on the respective unit objects. This is to optimize access times so that methods that
250 belong to unit objects do not have to be called with a resolved unit path, but can be called with only
251 the unit id, too.</para>
252
253 <para><function>GetUnit()</function> may be used to get the unit object path for a unit name. It takes
254 the unit name and returns the object path. If a unit has not been loaded yet by this name this method
255 will fail.</para>
256
257 <para><function>GetUnitByPID()</function> may be used to get the unit object path of the unit a process
258 ID belongs to. It takes a UNIX PID and returns the object path. The PID must refer to an existing system process.</para>
259
260 <para><function>LoadUnit()</function> is similar to <function>GetUnit()</function> but will load the
261 unit from disk if possible.</para>
262
263 <para><function>StartUnit()</function> enqueues a start job and possibly depending jobs. It takes the unit
264 to activate and a mode string as arguments. The mode needs to be one of <literal>replace</literal>,
265 <literal>fail</literal>, <literal>isolate</literal>, <literal>ignore-dependencies</literal>, or
266 <literal>ignore-requirements</literal>. If <literal>replace</literal>, the method will start the unit and
267 its dependencies, possibly replacing already queued jobs that conflict with it. If
268 <literal>fail</literal>, the method will start the unit and its dependencies, but will fail if this would
269 change an already queued job. If <literal>isolate</literal>, the method will start the unit in question
270 and terminate all units that aren't dependencies of it. If <literal>ignore-dependencies</literal>, it
271 will start a unit but ignore all its dependencies. If <literal>ignore-requirements</literal>, it will
272 start a unit but only ignore the requirement dependencies. It is not recommended to make use of the
273 latter two options. On completion, this method returns the newly created job object.</para>
274
275 <para><function>StartUnitReplace()</function> is similar to <function>StartUnit()</function> but
276 replaces a job that is queued for one unit by a job for another unit.</para>
277
278 <para><function>StopUnit()</function> is similar to <function>StartUnit()</function> but stops the
279 specified unit rather than starting it. Note that the <literal>isolate</literal> mode is invalid for this
280 method.</para>
281
282 <para><function>ReloadUnit()</function>, <function>RestartUnit()</function>,
283 <function>TryRestartUnit()</function>, <function>ReloadOrRestartUnit()</function>, or
284 <function>ReloadOrTryRestartUnit()</function> may be used to restart and/or reload a unit. These methods take
285 similar arguments as <function>StartUnit()</function>. Reloading is done only if the unit is already
286 running and fails otherwise. If a service is restarted that isn't running, it will be started unless
287 the "Try" flavor is used in which case a service that isn't running is not affected by the restart. The
288 "ReloadOrRestart" flavors attempt a reload if the unit supports it and use a restart otherwise.</para>
289
290 <para><function>KillUnit()</function> may be used to kill (i.e. send a signal to) all processes of a
291 unit. It takes the unit <varname>name</varname>, an enum <varname>who</varname> and a UNIX
292 <varname>signal</varname> number to send. The <varname>who</varname> enum is one of
293 <literal>main</literal>, <literal>control</literal> or <literal>all</literal>. If
294 <literal>main</literal>, only the main process of the unit is killed. If <literal>control</literal>, only
295 the control process of the unit is killed. If <literal>all</literal>, all processes are killed. A
296 <literal>control</literal> process is for example a process that is configured via
297 <varname>ExecStop=</varname> and is spawned in parallel to the main daemon process in order to shut it
298 down.</para>
299
300 <para><function>GetJob()</function> returns the job object path for a specific job, identified by its
301 id.</para>
302
303 <para><function>CancelJob()</function> cancels a specific job identified by its numeric ID. This
304 operation is also available in the <function>Cancel()</function> method of Job objects (see below) and
305 exists primarily to reduce the necessary round trips to execute this operation. Note that this will not
306 have any effect on jobs whose execution has already begun.</para>
307
308 <para><function>ClearJobs()</function> flushes the job queue, removing all jobs that are still
309 queued. Note that this does not have any effect on jobs whose execution has already begun. It only
310 flushes jobs that are queued and have not yet begun execution.</para>
311
312 <para><function>ResetFailedUnit()</function> resets the "failed" state of a specific unit.</para>
313
314 <para><function>ResetFailed()</function> resets the "failed" state of all units.</para>
315
316 <para><function>ListUnits()</function> returns an array of all currently loaded units. Note that
317 units may be known by multiple names at the same name, and hence there might be more unit names loaded
318 than actual units behind them. The array consists of structures with the following elements:
319 <itemizedlist>
320 <listitem><para>The primary unit name as string</para></listitem>
321
322 <listitem><para>The human readable description string</para></listitem>
323
324 <listitem><para>The load state (i.e. whether the unit file has been loaded
325 successfully)</para></listitem>
326
327 <listitem><para>The active state (i.e. whether the unit is currently started or
328 not)</para></listitem>
329
330 <listitem><para>The sub state (a more fine-grained version of the active state that is specific to
331 the unit type, which the active state is not)</para></listitem>
332
333 <listitem><para>A unit that is being followed in its state by this unit, if there is any, otherwise
334 the empty string.</para></listitem>
335
336 <listitem><para>The unit object path</para></listitem>
337
338 <listitem><para>If there is a job queued for the job unit, the numeric job id, 0
339 otherwise</para></listitem>
340
341 <listitem><para>The job type as string</para></listitem>
342
343 <listitem><para>The job object path</para></listitem>
344 </itemizedlist></para>
345
346 <para><function>ListJobs()</function> returns an array with all currently queued jobs. Returns an array
347 consisting of structures with the following elements:
348 <itemizedlist>
349 <listitem><para>The numeric job id</para></listitem>
350
351 <listitem><para>The primary unit name for this job</para></listitem>
352
353 <listitem><para>The job type as string</para></listitem>
354
355 <listitem><para>The job state as string</para></listitem>
356
357 <listitem><para>The job object path</para></listitem>
358
359 <listitem><para>The unit object path</para></listitem>
360 </itemizedlist></para>
361
362 <para><function>Subscribe()</function> enables most bus signals to be sent out. Clients which are
363 interested in signals need to call this method. Signals are only sent out if at least one client
364 invoked this method. <function>Unsubscribe()</function> reverts the signal subscription that
365 <function>Subscribe()</function> implements. It is not necessary to invoke
366 <function>Unsubscribe()</function> as clients are tracked. Signals are no longer sent out as soon as
367 all clients which previously asked for <function>Subscribe()</function> either closed their connection
368 to the bus or invoked <function>Unsubscribe()</function>.</para>
369
370 <para><function>Reload()</function> may be invoked to reload all unit files.</para>
371
372 <para><function>Reexecute()</function> may be invoked to reexecute the main manager process. It will
373 serialize its state, reexecute, and deserizalize the state again. This is useful for upgrades and is a
374 more comprehensive version of <function>Reload()</function>.</para>
375
376 <para><function>Exit()</function> may be invoked to ask the manager to exit. This is not available for
377 the system manager and is useful only for user session managers.</para>
378
379 <para><function>Reboot()</function>, <function>PowerOff()</function>, <function>Halt()</function>, or
380 <function>KExec()</function> may be used to ask for immediate reboot, powering down, halt or kexec
381 based reboot of the system. Note that this does not shut down any services and immediately transitions
382 into the reboot process. These functions are normally only called as the last step of shutdown and should
383 not be called directly. To shut down the machine, it is generally a better idea to invoke
384 <function>Reboot()</function> or <function>PowerOff()</function> on the
385 <filename>systemd-logind</filename> manager object; see
386 <citerefentry><refentrytitle>org.freedesktop.login1</refentrytitle><manvolnum>5</manvolnum></citerefentry>
387 for more information.</para>
388
389 <para><function>SwitchRoot()</function> may be used to transition to a new root directory. This is
390 intended to be used by initial RAM disks. The method takes two arguments: the new root directory (which
391 needs to be specified) and an init binary path (which may be left empty, in which case it is
392 automatically searched for). The state of the system manager will be serialized before the
393 transition. After the transition, the manager binary on the main system is invoked and replaces the old
394 PID 1. All state will then be deserialized.</para>
395
396 <para><function>SetEnvironment()</function> may be used to alter the environment block that is passed
397 to all spawned processes. It takes a string array of environment variable assignments. Any previously set
398 environment variables will be overridden.</para>
399
400 <para><function>UnsetEnvironment()</function> may be used to unset environment variables. It takes a
401 string array of environment variable names. All variables specified will be unset (if they have been
402 set previously) and no longer be passed to all spawned processes. This method has no effect for variables
403 that were previously not set, but will not fail in that case.</para>
404
405 <para><function>UnsetAndSetEnvironment()</function> is a combination of
406 <function>UnsetEnvironment()</function> and <function>SetEnvironment()</function>. It takes two
407 lists. The first list contains variables to unset, the second one contains assignments to set. If a
408 variable is listed in both, the variable is set after this method returns, i.e. the set list overrides the
409 unset list.</para>
410
411 <para><function>ListUnitFiles()</function> returns an array of unit names and their enablement
412 status. Note that <function>ListUnit()</function> returns a list of units currently loaded into memory,
413 while <function>ListUnitFiles()</function> returns a list of unit <emphasis>files</emphasis> that were
414 found on disk. Note that while most units are read directly from a unit file with the same name, some
415 units are not backed by files and some files (templates) cannot directly be loaded as units but need
416 to be instantiated instead.</para>
417
418 <para><function>GetUnitFileState()</function> returns the current enablement status of a specific unit
419 file.</para>
420
421 <para><function>EnableUnitFiles()</function> may be used to enable one or more units in the system (by
422 creating symlinks to them in <filename>/etc</filename> or <filename>/run</filename>). It takes a list
423 of unit files to enable (either just file names or full absolute paths if the unit files are residing
424 outside the usual unit search paths) and two booleans: the first controls whether the unit shall be
425 enabled for runtime only (true, <filename>/run</filename>), or persistently (false,
426 <filename>/etc</filename>). The second one controls whether symlinks pointing to other units shall be
427 replaced if necessary. This method returns one boolean and an array of the changes made. The boolean
428 signals whether the unit files contained any enablement information (i.e. an [Install]) section. The
429 changes array consists of structures with three strings: the type of the change (one of
430 <literal>symlink</literal> or <literal>unlink</literal>), the file name of the symlink and the
431 destination of the symlink. Note that most of the following calls return a changes list in the same
432 format.</para>
433
434 <para>Similarly, <function>DisableUnitFiles()</function> disables one or more units in the system,
435 i.e. removes all symlinks to them in <filename>/etc</filename> and <filename>/run</filename>.</para>
436
437 <para>Similarly, <function>ReenableUnitFiles()</function> applies the changes to one or more units that
438 would result from disabling and enabling the unit quickly one after the other in an atomic
439 fashion. This is useful to apply updated [Install] information contained in unit files.</para>
440
441 <para>Similarly, <function>LinkUnitFiles()</function> links unit files (that are located outside of the
442 usual unit search paths) into the unit search path.</para>
443
444 <para>Similarly, <function>PresetUnitFiles()</function> enables/disables one or more unit files
445 according to the preset policy. See
446 <citerefentry><refentrytitle>systemd.preset</refentrytitle><manvolnum>7</manvolnum></citerefentry> for more
447 information.</para>
448
449 <para>Similarly, <function>MaskUnitFiles()</function> masks unit files and
450 <function>UnmaskUnitFiles()</function> unmasks them again.</para>
451
452 <para><function>SetDefaultTarget()</function> changes the <filename>default.target</filename> link. See
453 <citerefentry><refentrytitle>bootup</refentrytitle><manvolnum>7</manvolnum></citerefentry> for more
454 information.</para>
455
456 <para><function>GetDefaultTarget()</function> retrieves the name of the unit to which
457 <filename>default.target</filename> is aliased.</para>
458
459 <para><function>SetUnitProperties()</function> may be used to modify certain unit properties at
460 runtime. Not all properties may be changed at runtime, but many resource management settings (primarily
461 those listed in
462 <citerefentry><refentrytitle>systemd.cgroup</refentrytitle><manvolnum>5</manvolnum></citerefentry>)
463 may. The changes are applied instantly and stored on disk for future boots, unless
464 <varname>runtime</varname> is true, in which case the settings only apply until the next
465 reboot. <varname>name</varname> is the name of the unit to modify. <varname>properties</varname> are
466 the settings to set, encoded as an array of property name and value pairs. Note that this is not a
467 dictionary! Also note that when setting array properties with this method usually results in appending to
468 the pre-configured array. To reset the configured arrays, set the property to an empty array first and
469 then append to it.</para>
470
471 <para><function>StartTransientUnit()</function> may be used to create and start a transient unit which
472 will be released as soon as it is not running or referenced anymore or the system is
473 rebooted. <varname>name</varname> is the unit name including its suffix and must be
474 unique. <varname>mode</varname> is the same as in <function>StartUnit()</function>,
475 <varname>properties</varname> contains properties of the unit, specified like in
476 <function>SetUnitProperties()</function>. <varname>aux</varname> is currently unused and should be
477 passed as an empty array. See the <ulink
478 url="http://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New Control Group
479 Interface</ulink> for more information how to make use of this functionality for resource control
480 purposes.</para>
481 </refsect2>
482
483 <refsect2>
484 <title>Signals</title>
485
486 <para>Note that most signals are sent out only after <function>Subscribe()</function> has been invoked
487 by at least one client. Make sure to invoke this method when subscribing to these signals!</para>
488
489 <para><function>UnitNew()</function> and <function>UnitRemoved()</function> are sent out each time a
490 new unit is loaded or unloaded. Note that this has little to do with whether a unit is available on
491 disk or not, and simply reflects the units that are currently loaded into memory. The signals take two
492 parameters: the primary unit name and the object path.</para>
493
494 <para><function>JobNew()</function> and <function>JobRemoved()</function> are sent out each time a new
495 job is queued or dequeued. Both signals take the numeric job ID, the bus path and the primary unit name
496 for this job as arguments. <function>JobRemoved()</function> also includes a result string which is one
497 of <literal>done</literal>, <literal>canceled</literal>, <literal>timeout</literal>,
498 <literal>failed</literal>, <literal>dependency</literal>, or
499 <literal>skipped</literal>. <literal>done</literal> indicates successful execution of a
500 job. <literal>canceled</literal> indicates that a job has been canceled (via
501 <function>CancelJob()</function> above) before it finished execution (this doesn't necessarily mean
502 though that the job operation is actually cancelled too, see above). <literal>timeout</literal>
503 indicates that the job timeout was reached. <literal>failed</literal> indicates that the job
504 failed. <literal>dependency</literal> indicates that a job this job depended on failed and the job hence
505 was removed as well. <literal>skipped</literal> indicates that a job was skipped because
506 it didn't apply to the unit's current state.</para>
507
508 <para><function>StartupFinished()</function> is sent out when startup finishes. It carries six
509 microsecond timespan values, each indicating how much boot time has been spent in the firmware (if
510 known), in the boot loader (if known), in the kernel initialization phase, in the initrd (if known), in
511 userspace and in total. These values may also be calculated from the
512 <varname>FirmwareTimestampMonotonic</varname>, <varname>LoaderTimestampMonotonic</varname>,
513 <varname>InitRDTimestampMonotonic</varname>, <varname>UserspaceTimestampMonotonic</varname>, and
514 <varname>FinishTimestampMonotonic</varname> properties (see below).</para>
515
516 <para><function>UnitFilesChanged()</function> is sent out each time the list of enabled or masked unit
517 files on disk have changed.</para>
518
519 <para><function>Reloading()</function> is sent out immediately before a daemon reload is done (with the
520 boolean parameter set to True) and after a daemon reload is completed (with the boolean parameter set
521 to False). This may be used by UIs to optimize UI updates.</para>
522 </refsect2>
523
524 <refsect2>
525 <title>Properties</title>
526
527 <para>Most properties simply reflect the respective options in
528 <filename>/etc/systemd/system.conf</filename> and the kernel command line.</para>
529
530 <para>The others:</para>
531
532 <para><varname>Version</varname> encodes the version string of the running systemd instance. Note that
533 the version string is purely informational. It should not be parsed and one may not assume the version to
534 be formatted in any particular way. We take the liberty to change the versioning scheme at any time and
535 it is not part of the public API.</para>
536
537 <para><varname>Features</varname> encodes the features that have been enabled and disabled for this
538 build. Enabled options are prefixed with +, disabled options with -.</para>
539
540 <para><varname>Tainted</varname> encodes a couple of taint flags as a colon-separated list. When
541 systemd detects it is running on a system with certain problems, it will set an appropriate taint
542 flag. Taints may be used to lower the chance of bogus bug reports. The following taints are currently
543 known: <literal>split-usr</literal>, <literal>mtab-not-symlink</literal>,
544 <literal>cgroups-missing</literal>, <literal>local-hwclock</literal>. <literal>split-usr</literal> is
545 set if <filename>/usr</filename> is not pre-mounted when systemd is first invoked. See
546 <ulink url="http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken">
547 Booting Without /usr is Broken</ulink>
548 for details why this is bad. <literal>mtab-not-symlink</literal> indicates that
549 <filename>/etc/mtab</filename> is not a symlink to <filename>/proc/self/mounts</filename> as
550 required. <literal>cgroups-missing</literal> indicates that control groups have not been enabled in the
551 kernel. <literal>local-hwclock</literal> indicates that the local RTC is configured to be in local time
552 rather than UTC.</para>
553
554 <para><varname>FirmwareTimestamp</varname>, <varname>FirmwareTimestampMonotonic</varname>,
555 <varname>LoaderTimestamp</varname>, <varname>LoaderTimestampMonotonic</varname>,
556 <varname>KernelTimestamp</varname>, <varname>KernelTimestampMonotonic</varname>,
557 <varname>InitRDTimestamp</varname>, <varname>InitRDTimestampMonotonic</varname>,
558 <varname>UserspaceTimestamp</varname>, <varname>UserspaceTimestampMonotonic</varname>,
559 <varname>FinishTimestamp</varname>, and <varname>FinishTimestampMonotonic</varname> encode
560 <constant>CLOCK_REALTIME</constant> and <constant>CLOCK_MONOTONIC</constant> microsecond timestamps
561 taken when the firmware first began execution, when the boot loader first began execution, when the
562 kernel first began execution, when the initrd first began execution, when the main systemd instance
563 began execution and finally, when all queued startup jobs finished execution. These values are useful
564 for determining boot-time performance. Note that as monotonic time begins with the kernel startup, the
565 <varname>KernelTimestampMonotonic</varname> timestamp will always be 0 and
566 <varname>FirmwareTimestampMonotonic</varname> and <varname>LoaderTimestampMonotonic</varname> are to
567 be read as negative values. Also, not all fields are always available, depending on the used firmware,
568 boot loader or initrd implementation. In these cases the respective pairs of timestamps are both 0,
569 indicating that no data is available.</para>
570
571 <para>Similarly, the <varname>SecurityStartTimestamp</varname>,
572 <varname>GeneratorsStartTimestamp</varname> and <varname>LoadUnitTimestamp</varname> (as well as their
573 monotonic and stop counterparts) expose performance data for uploading the security policies to the
574 kernel (such as the SELinux, IMA, or SMACK policies), for running the generator tools and for loading
575 the unit files.</para>
576
577 <para><varname>NNames</varname> encodes how many unit names are currently known. This only includes
578 names of units that are currently loaded and can be more than the amount of actually loaded units since
579 units may have more than one name.</para>
580
581 <para><varname>NJobs</varname> encodes how many jobs are currently queued.</para>
582
583 <para><varname>NInstalledJobs</varname> encodes how many jobs have ever been queued in total.</para>
584
585 <para><varname>NFailedJobs</varname> encodes how many jobs have ever failed in total.</para>
586
587 <para><varname>Progress</varname> encodes boot progress as a floating point value between 0.0 and
588 1.0. This value begins at 0.0 at early-boot and ends at 1.0 when boot is finished and is based on the
589 number of executed and queued jobs. After startup, this field is always 1.0 indicating a finished
590 boot.</para>
591
592 <para><varname>Environment</varname> encodes the environment block passed to all executed services. It
593 may be altered with bus calls such as <function>SetEnvironment()</function> (see above).</para>
594
595 <para><varname>UnitPath</varname> encodes the currently active unit file search path. It is an array of
596 file system paths encoded as strings.</para>
597
598 <para><varname>Virtualization</varname> contains a short ID string describing the virtualization
599 technology the system runs in. On bare-metal hardware this is the empty string. Otherwise, it contains
600 an identifier such as <literal>kvm</literal>, <literal>vmware</literal> and so on. For a full list of
601 IDs see
602 <citerefentry><refentrytitle>systemd-detect-virt</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
603 Note that only the "innermost" virtualization technology is exported here. This detects both
604 full-machine virtualizations (VMs) and shared-kernel virtualization (containers).</para>
605
606 <para><varname>Architecture</varname> contains a short ID string describing the architecture the
607 systemd instance is running on. This follows the same vocabulary as
608 <varname>ConditionArchitectures=</varname>.</para>
609
610 <para><varname>ControlGroup</varname> contains the root control group path of this system manager. Note
611 that the root path is encoded as the empty string here (not as <literal>/</literal>!), so that it can be
612 appended to <filename>/sys/fs/cgroup/systemd</filename> easily. This value will be set to the empty
613 string for the host instance and some other string for container instances.</para>
614 </refsect2>
615
616 <refsect2>
617 <title>Security</title>
618
619 <para>Read access is generally granted to all clients. Additionally, for unprivileged clients, some
620 operations are allowed through the PolicyKit privilege system. Operations which modify unit state
621 (<function>StartUnit()</function>, <function>StopUnit()</function>, <function>KillUnit()</function>,
622 <function>RestartUnit()</function> and similar, <function>SetProperty</function>) require
623 <interfacename>org.freedesktop.systemd1.manage-units</interfacename>. Operations which modify unit file
624 enablement state (<function>EnableUnitFiles()</function>, <function>DisableUnitFiles()</function>,
625 <function>ReenableUnitFiles()</function>, <function>LinkUnitFiles()</function>,
626 <function>PresetUnitFiles</function>, <function>MaskUnitFiles</function>, and similar) require
627 <interfacename>org.freedesktop.systemd1.manage-unit-files</interfacename>). Operations which modify the
628 exported environment (<function>SetEnvironment()</function>, <function>UnsetEnvironment()</function>,
629 <function>UnsetAndSetEnvironment()</function>) require
630 <interfacename>org.freedesktop.systemd1.set-environment</interfacename>. <function>Reload()</function>
631 and <function>Reexecute()</function> require
632 <interfacename>org.freedesktop.systemd1.reload-daemon</interfacename>.
633 </para>
634 </refsect2>
635 </refsect1>
636
637 <refsect1>
638 <title>Unit Objects</title>
639
640 <programlisting interface="org.freedesktop.systemd1.Unit">
641 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
642 --object-path /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice
643
644 node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
645 interface org.freedesktop.systemd1.Unit {
646 methods:
647 Start(in s mode,
648 out o job);
649 Stop(in s mode,
650 out o job);
651 Reload(in s mode,
652 out o job);
653 Restart(in s mode,
654 out o job);
655 TryRestart(in s mode,
656 out o job);
657 ReloadOrRestart(in s mode,
658 out o job);
659 ReloadOrTryRestart(in s mode,
660 out o job);
661 Kill(in s who,
662 in i signal);
663 ResetFailed();
664 SetProperties(in b runtime,
665 in a(sv) properties);
666 signals:
667 properties:
668 readonly s Id = 'avahi-daemon.service';
669 readonly as Names = ['avahi-daemon.service'];
670 readonly s Following = '';
671 readonly as Requires = ['avahi-daemon.socket', 'dbus.socket', 'basic.target'];
672 readonly as RequiresOverridable = [];
673 readonly as Requisite = [];
674 readonly as RequisiteOverridable = [];
675 readonly as Wants = [];
676 readonly as BindsTo = [];
677 readonly as PartOf = [];
678 readonly as RequiredBy = [];
679 readonly as RequiredByOverridable = [];
680 readonly as WantedBy = ['multi-user.target'];
681 readonly as BoundBy = [];
682 readonly as ConsistsOf = [];
683 readonly as Conflicts = ['shutdown.target'];
684 readonly as ConflictedBy = [];
685 readonly as Before = ['shutdown.target', 'multi-user.target'];
686 readonly as After = ['avahi-daemon.socket', 'systemd-journald.socket', 'dbus.socket', 'basic.target'];
687 readonly as OnFailure = [];
688 readonly as Triggers = [];
689 readonly as TriggeredBy = ['avahi-daemon.socket'];
690 readonly as PropagatesReloadTo = [];
691 readonly as ReloadPropagatedFrom = [];
692 readonly as RequiresMountsFor = [];
693 readonly s Description = 'Avahi mDNS/DNS-SD Stack';
694 readonly s SourcePath = '';
695 readonly as DropInPaths = [];
696 readonly as Documentation = [];
697 readonly s LoadState = 'loaded';
698 readonly s ActiveState = 'active';
699 readonly s SubState = 'running';
700 readonly s FragmentPath = '/usr/lib/systemd/system/avahi-daemon.service';
701 readonly s UnitFileState = 'enabled';
702 readonly t InactiveExitTimestamp = 1368576738559539;
703 readonly t InactiveExitTimestampMonotonic = 22561234;
704 readonly t ActiveEnterTimestamp = 1368576738648314;
705 readonly t ActiveEnterTimestampMonotonic = 22650009;
706 readonly t ActiveExitTimestamp = 0;
707 readonly t ActiveExitTimestampMonotonic = 0;
708 readonly t InactiveEnterTimestamp = 0;
709 readonly t InactiveEnterTimestampMonotonic = 0;
710 readonly b CanStart = true;
711 readonly b CanStop = true;
712 readonly b CanReload = true;
713 readonly b CanIsolate = false;
714 readonly (uo) Job = (0, '/org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice');
715 readonly b StopWhenUnneeded = false;
716 readonly b RefuseManualStart = false;
717 readonly b RefuseManualStop = false;
718 readonly b AllowIsolate = false;
719 readonly b DefaultDependencies = true;
720 readonly b OnFailureIsolate = false;
721 readonly b IgnoreOnIsolate = false;
722 readonly b IgnoreOnSnapshot = false;
723 readonly b NeedDaemonReload = false;
724 readonly t JobTimeoutUSec = 0;
725 readonly t ConditionTimestamp = 1368576738557978;
726 readonly t ConditionTimestampMonotonic = 22559674;
727 readonly b ConditionResult = true;
728 readonly a(sbbsi) Conditions = [('ConditionVirtualization, false, false, 'no', 1)];
729 readonly (ss) LoadError = ('', '');
730 readonly b Transient = false;
731 };
732 interface org.freedesktop.systemd1.Service {
733 ...
734 };
735 interface org.freedesktop.DBus.Properties {
736 ...
737 };
738 interface org.freedesktop.DBus.Peer {
739 ...
740 };
741 interface org.freedesktop.DBus.Introspectable {
742 ...
743 };
744 };
745 </programlisting>
746
747 <refsect2>
748 <title>Methods</title>
749
750 <para><function>Start()</function>, <function>Stop()</function>, <function>Reload()</function>,
751 <function>Restart()</function>, <function>TryRestart()</function>,
752 <function>ReloadOrRestart()</function>, <function>ReloadOrTryRestart()</function>,
753 <function>Kill()</function>, <function>ResetFailed()</function>, and
754 <function>SetProperties()</function> implement the same operation as the respective methods on the
755 <interfacename>Manager</interfacename> object (see above). However, these methods operate on the unit
756 object and hence do not take a unit name parameter. Invoking the methods directly on the Manager
757 object has the advantage of not requiring a <function>GetUnit()</function> call to get the unit object
758 for a specific unit name. Calling the methods on the Manager object is hence a round trip
759 optimization.</para>
760 </refsect2>
761
762 <refsect2>
763 <title>Properties</title>
764
765 <para><varname>Id</varname> contains the primary name of the unit.</para>
766
767 <para><varname>Names</varname> contains all names of the unit, including the primary name that is also
768 exposed in <varname>Id</varname>.</para>
769
770 <para><varname>Following</varname> either contains the empty string or contains the name of another
771 unit that this unit follows in state. This is used for some device units which reflect the unit state
772 machine of another unit, and which other unit this is might possibly change.</para>
773
774 <para><varname>Requires</varname>, <varname>RequiresOverridable</varname>,
775 <varname>Requisite</varname>, <varname>RequisiteOverridable</varname>, <varname>Wants</varname>,
776 <varname>BindsTo</varname>, <varname>RequiredBy</varname>, <varname>RequiredByOverridable</varname>,
777 <varname>WantedBy</varname>, <varname>BoundBy</varname>, <varname>Conflicts</varname>,
778 <varname>ConflictedBy</varname>, <varname>Before</varname>, <varname>After</varname>,
779 <varname>OnFailure</varname>, <varname>Triggers</varname>, <varname>TriggeredBy</varname>,
780 <varname>PropagatesReloadTo</varname>, and <varname>RequiresMountsFor</varname> contain arrays which encode
781 the dependencies and their inverse dependencies (where this applies) as configured in the unit file or
782 determined automatically.</para>
783
784 <para><varname>Description</varname> contains the human readable description string for the
785 unit.</para>
786
787 <para><varname>SourcePath</varname> contains the path to a configuration file this unit is
788 automatically generated from in case it is not a native unit (in which case it contains the empty
789 string). For example, all mount units generated from <filename>/etc/fstab</filename> have this field
790 set to <filename>/etc/fstab</filename>.</para>
791
792 <para><varname>Documentation</varname> contains a string array with URLs of documentation for this
793 unit.</para>
794
795 <para><varname>LoadState</varname> contains a state value that reflects whether the configuration file
796 of this unit has been loaded. The following states are currently defined: <literal>loaded</literal>,
797 <literal>error</literal>, and <literal>masked</literal>. <literal>loaded</literal> indicates that the
798 configuration was successfully loaded. <literal>error</literal> indicates that the configuration failed
799 to load. The <varname>LoadError</varname> field (see below) contains information about the cause of
800 this failure. <literal>masked</literal> indicates that the unit is currently masked out (i.e. symlinked
801 to <filename>/dev/null</filename> or empty). Note that the <varname>LoadState</varname> is fully
802 orthogonal to the <varname>ActiveState</varname> (see below) as units without valid loaded
803 configuration might be active (because configuration might have been reloaded at a time where a unit
804 was already active).</para>
805
806 <para><varname>ActiveState</varname> contains a state value that reflects whether the unit is currently
807 active or not. The following states are currently defined: <literal>active</literal>,
808 <literal>reloading</literal>, <literal>inactive</literal>, <literal>failed</literal>,
809 <literal>activating</literal>, and <literal>deactivating</literal>. <literal>active</literal> indicates
810 that unit is active (obviously...). <literal>reloading</literal> indicates that the unit is active and
811 currently reloading its configuration. <literal>inactive</literal> indicates that it is inactive and
812 the previous run was successful or no previous run has taken place yet. <literal>failed</literal>
813 indicates that it is inactive and the previous run was not successful (more information about the
814 reason for this is available on the unit type specific interfaces, for example for services in the
815 <varname>Result</varname> property, see below). <literal>activating</literal> indicates that the unit
816 has previously been inactive but is currently in the process of entering an active state. Conversely
817 <literal>deactivating</literal> indicates that the unit is currently in the process of
818 deactivation.</para>
819
820 <para><varname>SubState</varname> encodes states of the same state machine that
821 <varname>ActiveState</varname> covers, but knows more fine-grained states that are
822 unit-type-specific. Where <varname>ActiveState</varname> only covers six high-level states,
823 <varname>SubState</varname> covers possibly many more low-level unit-type-specific states that are
824 mapped to the six high-level states. Note that multiple low-level states might map to the same
825 high-level state, but not vice versa. Not all high-level states have low-level counterparts on all unit
826 types. At this point the low-level states are not documented here, and are more likely to be extended
827 later on than the common high-level states explained above.</para>
828
829 <para><varname>FragmentPath</varname> contains the unit file path this unit was read from, if there is
830 one (if not, it contains the empty string).</para>
831
832 <para><varname>UnitFileState</varname> encodes the install state of the unit file of
833 <varname>FragmentPath</varname>. It currently knows the following states: <literal>enabled</literal>,
834 <literal>enabled-runtime</literal>, <literal>linked</literal>, <literal>linked-runtime</literal>,
835 <literal>masked</literal>, <literal>masked-runtime</literal>, <literal>static</literal>,
836 <literal>disabled</literal>, and <literal>invalid</literal>. <literal>enabled</literal> indicates that a
837 unit file is permanently enabled. <literal>enable-runtime</literal> indicates the unit file is only
838 temporarily enabled and will no longer be enabled after a reboot (that means, it is enabled via
839 <filename>/run</filename> symlinks, rather than <filename>/etc</filename>). <literal>linked</literal>
840 indicates that a unit is linked into <filename>/etc</filename> permanently. <literal>linked-runtime</literal>
841 indicates that a unit is linked into <filename>/run</filename> temporarily (until the next
842 reboot). <literal>masked</literal> indicates that the unit file is masked permanently.
843 <literal>masked-runtime</literal> indicates that it is masked in <filename>/run</filename> temporarily
844 (until the next reboot). <literal>static</literal> indicates that the unit is statically enabled, i.e.
845 always enabled and doesn't need to be enabled explicitly. <literal>invalid</literal> indicates that it
846 could not be determined whether the unit file is enabled.</para>
847
848 <para><varname>InactiveExitTimestamp</varname>, <varname>InactiveExitTimestampMonotonic</varname>,
849 <varname>ActiveEnterTimestamp</varname>, <varname>ActiveEnterTimestampMonotonic</varname>,
850 <varname>ActiveExitTimestamp</varname>, <varname>ActiveExitTimestampMonotonic</varname>,
851 <varname>InactiveEnterTimestamp</varname>, and <varname>InactiveEnterTimestampMonotonic</varname>
852 contain <constant>CLOCK_REALTIME</constant> and <constant>CLOCK_MONOTONIC</constant> 64-bit microsecond
853 timestamps of the last time a unit left the inactive state, entered the active state, exited the active
854 state, or entered an inactive state. These are the points in time where the unit transitioned
855 <literal>inactive</literal>/<literal>failed</literal> → <literal>activating</literal>,
856 <literal>activating</literal> → <literal>active</literal>, <literal>active</literal> →
857 <literal>deactivating</literal>, and finally <literal>deactivating</literal> →
858 <literal>inactive</literal>/<literal>failed</literal>. The fields are 0 in case such a transition has
859 not yet been recorded on this boot.</para>
860
861 <para><varname>CanStart</varname>, <varname>CanStop</varname>, and <varname>CanReload</varname> encode
862 as booleans whether the unit supports the start, stop or reload operations. Even if a unit supports
863 such an operation, the client might not necessary have the necessary privileges to execute them.</para>
864
865 <para><varname>CanIsolate</varname> encodes as a boolean whether the unit may be started in isolation
866 mode.</para>
867
868 <para><varname>Job</varname> encodes the job ID and job object path of the job currently scheduled or
869 executed for this unit, if there is any. If no job is scheduled or executed, the job id field will be
870 0.</para>
871
872 <para><varname>StopWhenUnneeded</varname>, <varname>RefuseManualStart</varname>,
873 <varname>RefuseManualStop</varname>, <varname>AllowIsolate</varname>,
874 <varname>DefaultDependencies</varname>, <varname>OnFailureIsolate</varname>,
875 <varname>IgnoreOnIsolate</varname>, <varname>IgnoreOnSnapshot</varname> map directly to the
876 corresponding configuration booleans in the unit file.</para>
877
878 <para><varname>DefaultControlGroup</varname> contains the main control group of this unit as a
879 string. This refers to a group in systemd's own <literal>name=systemd</literal> hierarchy, which
880 systemd uses to watch and manipulate the unit and all its processes.</para>
881
882 <para><varname>NeedDaemonReload</varname> is a boolean that indicates whether the configuration file
883 this unit is loaded from (i.e. <varname>FragmentPath</varname> or <varname>SourcePath</varname>) has
884 changed since the configuration was read and hence whether a configuration reload is
885 recommended.</para>
886
887 <para><varname>JobTimeoutUSec</varname> maps directly to the corresponding configuration setting in the
888 unit file.</para>
889
890 <para><varname>ConditionTimestamp</varname> and <varname>ConditionTimestampMonotonic</varname> contain
891 the <constant>CLOCK_REALTIME</constant>/<constant>CLOCK_MONOTONIC</constant> microsecond timestamps of
892 the last time the configured conditions of the unit have been checked or 0 if they have never been
893 checked. Conditions are checked when a unit is requested to start.</para>
894
895 <para><varname>ConditionResult</varname> contains the condition result of the last time the configured
896 conditions of this unit were checked. </para>
897
898 <para><varname>Conditions</varname> contains all configured conditions of the unit. For each condition,
899 five fields are given: condition type (e.g. <varname>ConditionPathExists</varname>), whether the
900 condition is a trigger condition, whether the condition is reversed, the right hand side of the
901 condition (e.g. the path in case of <varname>ConditionPathExists</varname>), and the status. The status
902 can be 0, in which case the condition hasn't been checked yet, a positive value, in which case the
903 condition passed, or a negative value, in which case the condition failed. Currently only 0, +1, and -1
904 are used, but additional values may be used in the future, retaining the meaning of
905 zero/positive/negative values.</para>
906
907 <para><varname>LoadError</varname> contains a pair of strings. If the unit failed to load (as encoded
908 in <varname>LoadState</varname>, see above), then this will include a D-Bus error pair consisting of
909 the error ID and an explanatory human readable string of what happened. If it loaded successfully, this
910 will be a pair of empty strings.</para>
911
912 <para><varname>Transient</varname> contains a boolean that indicates whether the unit was created as a
913 transient unit (i.e. via <function>CreateTransientUnit()</function> on the manager object).</para>
914 </refsect2>
915
916 <refsect2>
917 <title>Security</title>
918
919 <para>Similarly to methods on the <interfacename>Manager</interfacename> object, read-only access is
920 allowed for everyone. All operations are allowed for clients with the
921 <constant>CAP_SYS_ADMIN</constant> capability or when the
922 <interfacename>org.freedesktop.systemd1.manage-units</interfacename> privilege is granted by
923 PolicyKit.</para>
924 </refsect2>
925 </refsect1>
926
927 <refsect1>
928 <title>Service Unit Objects</title>
929
930 <para>All service unit objects implement the
931 <interfacename>org.freedesktop.systemd1.Service</interfacename> interface (described here) in addition to
932 the generic <interfacename>org.freedesktop.systemd1.Unit</interfacename> interface (see above).</para>
933
934 <programlisting interface="org.freedesktop.systemd1.Service">
935 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
936 --object-path /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice
937
938 interface org.freedesktop.systemd1.Unit {
939 ...
940 };
941 interface org.freedesktop.systemd1.Service {
942 methods:
943 signals:
944 properties:
945 readonly s Type = 'dbus';
946 readonly s Restart = 'no';
947 readonly s PIDFile = '';
948 readonly s NotifyAccess = 'main';
949 readonly t RestartUSec = 100000;
950 readonly t TimeoutUSec = 90000000;
951 readonly t WatchdogUSec = 0;
952 readonly t WatchdogTimestamp = 0;
953 readonly t WatchdogTimestampMonotonic = 0;
954 readonly t StartLimitInterval = 10000000;
955 readonly u StartLimitBurst = 5;
956 readwrite s StartLimitAction = 'none
957 readonly s Slice = 'system.slice';
958 readonly s ControlGroup = '/system.slice/avahi-daemon.service';
959 readonly a(sasbttuii) ExecStartPre = [];
960 readonly a(sasbttuii) ExecStart = [('/usr/sbin/avahi-daemon', ['/usr/sbin/avahi-daemon', '-s'], false, 0, 0, 0, 0, 0, 0, 0)];
961 readonly a(sasbttuii) ExecStartPost = [];
962 readonly a(sasbttuii) ExecReload = [('/usr/sbin/avahi-daemon', ['/usr/sbin/avahi-daemon', '-r'], false, 0, 0, 0, 0, 0, 0, 0)];
963 readonly a(sasbttuii) ExecStop = [];
964 readonly a(sasbttuii) ExecStopPost = [];
965 readonly as Environment = [];
966 readonly a(sb) EnvironmentFiles = [];
967 readonly u UMask = 18;
968 readonly t LimitCPU = 18446744073709551615;
969 readonly t LimitFSIZE = 18446744073709551615;
970 readonly t LimitDATA = 18446744073709551615;
971 readonly t LimitSTACK = 18446744073709551615;
972 readonly t LimitCORE = 18446744073709551615;
973 readonly t LimitRSS = 18446744073709551615;
974 readonly t LimitNOFILE = 4096;
975 readonly t LimitAS = 18446744073709551615;
976 readonly t LimitNPROC = 256963;
977 readonly t LimitMEMLOCK = 65536;
978 readonly t LimitLOCKS = 18446744073709551615;
979 readonly t LimitSIGPENDING = 256963;
980 readonly t LimitMSGQUEUE = 819200;
981 readonly t LimitNICE = 0;
982 readonly t LimitRTPRIO = 0;
983 readonly t LimitRTTIME = 18446744073709551615;
984 readonly s WorkingDirectory = '';
985 readonly s RootDirectory = '';
986 readonly i OOMScoreAdjust = 0;
987 readonly i Nice = 0;
988 readonly i IOScheduling = 0;
989 readonly i CPUSchedulingPolicy = 0;
990 readonly i CPUSchedulingPriority = 0;
991 readonly ay CPUAffinity = [];
992 readonly t TimerSlackNSec = 50000;
993 readonly b CPUSchedulingResetOnFork = false;
994 readonly b NonBlocking = false;
995 readonly s StandardInput = 'null';
996 readonly s StandardOutput = 'journal';
997 readonly s StandardError = 'inherit';
998 readonly s TTYPath = '';
999 readonly b TTYReset = false;
1000 readonly b TTYVHangup = false;
1001 readonly b TTYVTDisallocate = false;
1002 readonly i SyslogPriority = 30;
1003 readonly s SyslogIdentifier = '';
1004 readonly b SyslogLevelPrefix = true;
1005 readonly s Capabilities = '';
1006 readonly i SecureBits = 0;
1007 readonly t CapabilityBoundingSet = 18446744073709551615;
1008 readonly s User = '';
1009 readonly s Group = '';
1010 readonly as SupplementaryGroups = [];
1011 readonly s TCPWrapName = '';
1012 readonly s PAMName = '';
1013 readonly as ReadWriteDirectories = [];
1014 readonly as ReadOnlyDirectories = [];
1015 readonly as InaccessibleDirectories = [];
1016 readonly t MountFlags = 0;
1017 readonly b PrivateTmp = false;
1018 readonly b PrivateNetwork = false;
1019 readonly b SameProcessGroup = false;
1020 readonly s UtmpIdentifier = '';
1021 readonly b IgnoreSIGPIPE = true;
1022 readonly b NoNewPrivileges = false;
1023 readonly au SystemCallFilter = [];
1024 readonly s KillMode = 'control-group';
1025 readonly i KillSignal = 15;
1026 readonly b SendSIGKILL = true;
1027 readonly b SendSIGHUP = false;
1028 readonly b CPUAccounting = false;
1029 readonly t CPUShares = 1024;
1030 readonly b BlockIOAccounting = false;
1031 readonly t BlockIOWeight = 1000;
1032 readonly a(st) BlockIODeviceWeight = [];
1033 readonly a(st) BlockIOReadBandwidth=;
1034 readonly a(st) BlockIOWriteBandwidth=;
1035 readonly b MemoryAccounting = false;
1036 readonly t MemoryLimit = 18446744073709551615;
1037 readonly s DevicePolicy = 'auto';
1038 readonly a(ss) DeviceAllow = [];
1039 readonly b PermissionsStartOnly = false;
1040 readonly b RootDirectoryStartOnly = false;
1041 readonly b RemainAfterExit = false;
1042 readonly t ExecMainStartTimestamp = 1368576738559537;
1043 readonly t ExecMainStartTimestampMonotonic = 22561233;
1044 readonly t ExecMainExitTimestamp = 1368576738559537;
1045 readonly t ExecMainExitTimestampMonotonic = 22561233;
1046 readonly u ExecMainPID = 666;
1047 readonly i ExecMainCode = 0;
1048 readonly i ExecMainStatus = 0;
1049 readonly u MainPID = 666;
1050 readonly u ControlPID = 0;
1051 readonly s BusName = 'org.freedesktop.Avahi';
1052 readonly s StatusText = 'Server startup complete. Host name is fedora.local. Local service cookie is 2431121142.';
1053 readonly s Result = 'success';
1054 };
1055 interface org.freedesktop.DBus.Properties {
1056 ...
1057 };
1058 interface org.freedesktop.DBus.Peer {
1059 ...
1060 };
1061 interface org.freedesktop.DBus.Introspectable {
1062 ...
1063 };
1064 };
1065 </programlisting>
1066
1067 <refsect2>
1068 <title>Properties</title>
1069
1070 <para>Most properties of the Service interface map directly to the corresponding settings in service
1071 unit files. For the sake of brevity, here's a list of all exceptions only:</para>
1072
1073 <para><varname>WatchdogTimestamp</varname> and <varname>WatchdogTimestampMonotonic</varname> contain
1074 <constant>CLOCK_REALTIME</constant>/<constant>CLOCK_MONOTONIC</constant> microsecond timestamps of the
1075 last watchdog ping received from the service, or 0 if none was ever received.</para>
1076
1077 <para><varname>ExecStartPre</varname>, <varname>ExecStart</varname>, <varname>ExecStartPost</varname>,
1078 <varname>ExecReload</varname>, <varname>ExecStop</varname>, and <varname>ExecStop</varname> are arrays
1079 of structures where each struct contains: the binary path to execute; an array with all arguments to
1080 pass to the executed command, starting with argument 0; a boolean whether it should be considered a
1081 failure if the process exits uncleanly; two pairs of
1082 <constant>CLOCK_REALTIME</constant>/<constant>CLOCK_MONOTONIC</constant> microsecond timestamps when
1083 the process began and finished running the last time, or 0 if it never ran or never finished running;
1084 the PID of the process, or 0 if it has not run yet; the exit code and status of the last run. This
1085 field hence maps more or less to the corresponding setting in the service unit file but is augmented
1086 with runtime data.</para>
1087
1088 <para><varname>LimitCPU</varname> (and related properties) map more or less directly to the
1089 corresponding settings in the service unit files except that if they aren't set, their value is
1090 18446744073709551615 (i.e. -1).</para>
1091
1092 <para><varname>Capabilities</varname> contains the configured capabilities, as formatted with
1093 <citerefentry project='man-pages'><refentrytitle>cap_to_text</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
1094 </para>
1095
1096 <para><varname>SecureBits</varname>, <varname>CapabilityBoundingSet</varname>,
1097 <varname>MountFlags</varname> also correspond to the configured settings of the unit files, but
1098 instead of being formatted as strings, they are encoded as the actual binary flags they are.
1099 </para>
1100
1101 <para><varname>ExecMainStartTimestamp</varname>, <varname>ExecMainStartTimestampMonotonic</varname>,
1102 <varname>ExecMainExitTimestamp</varname>, <varname>ExecMainExitTimestampMonotonic</varname>,
1103 <varname>ExecMainPID</varname>, <varname>ExecMainCode</varname>, <varname>ExecMainStatus</varname>
1104 contain information about the main process of the service as far as it is known. This is often the same
1105 runtime information that is stored in <varname>ExecStart</varname>. However, it deviates for
1106 <varname>Type=forking</varname> services where the main process of the service is not forked off
1107 systemd directly. These fields either contain information of the last run of the process or of the
1108 current running process.</para>
1109
1110 <para><varname>MainPID</varname> and <varname>ControlPID</varname> contain the main and control PID of
1111 the service. The main PID is the current main PID of the service and is 0 when the service currently
1112 has no main PID. The control PID is the PID of the current start/stop/reload process running and is 0
1113 if no such process is currently running. That means that <varname>ExecMainPID</varname> and
1114 <varname>MainPID</varname> differ in the way that the latter immediately reflects whether a main
1115 process is currently running while the latter possible contains information collected from the last run
1116 even if the process is no longer around.</para>
1117
1118 <para><varname>StatusText</varname> contains the status text passed to the service manager via a call
1119 to
1120 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
1121 This may be used by services to inform the service manager about its internal state with a nice
1122 explanatory string.</para>
1123
1124 <para><varname>Result</varname> encodes the execution result of the last run of the service. It is
1125 useful to determine the reason a service failed if it is in the <literal>failed</literal> state (see
1126 <varname>ActiveState</varname> above). The following values are currently known:
1127 <literal>success</literal> is set if the unit didn't fail. <literal>resources</literal> indicates that
1128 not enough resources were available to fork off and execute the service
1129 processes. <literal>timeout</literal> indicates that a time-out occurred while executing a service
1130 operation. <literal>exit-code</literal> indicates that a service process exited with an unclean exit
1131 code. <literal>signal</literal> indicates that a service process exited with an uncaught
1132 signal. <literal>core-dump</literal> indicates that a service process exited uncleanly and dumped
1133 core. <literal>watchdog</literal> indicates that a service did not send out watchdog ping messages
1134 often enough. <literal>start-limit</literal> indicates that a service has been started too frequently
1135 in a specific time frame (as configured in <varname>StartLimitInterval</varname>,
1136 <varname>StartLimitBurst</varname>).</para>
1137
1138 <para><varname>ControlGroup</varname> indicates the control group path the processes of this service
1139 unit are placed in.</para>
1140 </refsect2>
1141 </refsect1>
1142
1143 <refsect1>
1144 <title>Socket Unit Objects</title>
1145
1146 <programlisting interface="org.freedesktop.systemd1.Socket">
1147 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1148 --object-path /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket
1149
1150 node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
1151 interface org.freedesktop.systemd1.Unit {
1152 ...
1153 };
1154 interface org.freedesktop.systemd1.Socket {
1155 methods:
1156 signals:
1157 properties:
1158 readonly b BindIPv6Only = 'default';
1159 readonly u Backlog = 128;
1160 readonly t TimeoutUSec = 90000000;
1161 readonly s Slice = 'system.slice';
1162 readonly s ControlGroup = '/system.slice/avahi-daemon.socket';
1163 readonly a(sasbttuii) ExecStartPre = [];
1164 readonly a(sasbttuii) ExecStartPost = [];
1165 readonly a(sasbttuii) ExecStopPre = [];
1166 readonly a(sasbttuii) ExecStopPost = [];
1167 readonly as Environment = [];
1168 readonly a(sb) EnvironmentFiles = [];
1169 readonly u UMask = 18;
1170 readonly t LimitCPU = 18446744073709551615;
1171 readonly t LimitFSIZE = 18446744073709551615;
1172 readonly t LimitDATA = 18446744073709551615;
1173 readonly t LimitSTACK = 18446744073709551615;
1174 readonly t LimitCORE = 18446744073709551615;
1175 readonly t LimitRSS = 18446744073709551615;
1176 readonly t LimitNOFILE = 4096;
1177 readonly t LimitAS = 18446744073709551615;
1178 readonly t LimitNPROC = 61434;
1179 readonly t LimitMEMLOCK = 65536;
1180 readonly t LimitLOCKS = 18446744073709551615;
1181 readonly t LimitSIGPENDING = 61434;
1182 readonly t LimitMSGQUEUE = 819200;
1183 readonly t LimitNICE = 0;
1184 readonly t LimitRTPRIO = 0;
1185 readonly t LimitRTTIME = 18446744073709551615;
1186 readonly s WorkingDirectory = '';
1187 readonly s RootDirectory = '';
1188 readonly i OOMScoreAdjust = 0;
1189 readonly i Nice = 0;
1190 readonly i IOScheduling = 0;
1191 readonly i CPUSchedulingPolicy = 0;
1192 readonly i CPUSchedulingPriority = 0;
1193 readonly ay CPUAffinity = [];
1194 readonly t TimerSlackNSec = 50000;
1195 readonly b CPUSchedulingResetOnFork = false;
1196 readonly b NonBlocking = false;
1197 readonly s StandardInput = 'null';
1198 readonly s StandardOutput = 'journal';
1199 readonly s StandardError = 'inherit';
1200 readonly s TTYPath = '';
1201 readonly b TTYReset = false;
1202 readonly b TTYVHangup = false;
1203 readonly b TTYVTDisallocate = false;
1204 readonly i SyslogPriority = 30;
1205 readonly s SyslogIdentifier = '';
1206 readonly b SyslogLevelPrefix = true;
1207 readonly s Capabilities = '';
1208 readonly i SecureBits = 0;
1209 readonly t CapabilityBoundingSet = 18446744073709551615;
1210 readonly s User = '';
1211 readonly s Group = '';
1212 readonly as SupplementaryGroups = [];
1213 readonly s TCPWrapName = '';
1214 readonly s PAMName = '';
1215 readonly as ReadWriteDirectories = [];
1216 readonly as ReadOnlyDirectories = [];
1217 readonly as InaccessibleDirectories = [];
1218 readonly t MountFlags = 0;
1219 readonly b PrivateTmp = false;
1220 readonly b PrivateNetwork = false;
1221 readonly b SameProcessGroup = false;
1222 readonly s UtmpIdentifier = '';
1223 readonly b IgnoreSIGPIPE = true;
1224 readonly b NoNewPrivileges = false;
1225 readonly au SystemCallFilter = [];
1226 readonly s KillMode = 'control-group';
1227 readonly i KillSignal = 15;
1228 readonly b SendSIGKILL = true;
1229 readonly b SendSIGHUP = false;
1230 readonly b CPUAccounting = false;
1231 readonly t CPUShares = 1024;
1232 readonly b BlockIOAccounting = false;
1233 readonly t BlockIOWeight = 1000;
1234 readonly a(st) BlockIODeviceWeight = [];
1235 readonly a(st) BlockIOReadBandwidth=;
1236 readonly a(st) BlockIOWriteBandwidth=;
1237 readonly b MemoryAccounting = false;
1238 readonly t MemoryLimit = 18446744073709551615;
1239 readonly s DevicePolicy = 'auto';
1240 readonly a(ss) DeviceAllow = [];
1241 readonly u ControlPID = 0;
1242 readonly s BindToDevice = '';
1243 readonly u DirectoryMode = 493;
1244 readonly u SocketMode = 438;
1245 readonly b Accept = false;
1246 readonly b KeepAlive = false;
1247 readonly i Priority = -1;
1248 readonly t ReceiveBuffer = 0;
1249 readonly t SendBuffer = 0;
1250 readonly i IPTOS = -1;
1251 readonly i IPTTL = -1;
1252 readonly t PipeSize = 0;
1253 readonly b FreeBind = false;
1254 readonly b Transparent = false;
1255 readonly b Broadcast = false;
1256 readonly b PassCredentials = false;
1257 readonly b PassSecurity = false;
1258 readonly i Mark = -1;
1259 readonly u MaxConnections = 64;
1260 readonly u NAccepted = 0;
1261 readonly u NConnections = 0;
1262 readonly x MessageQueueMaxMessages = 0;
1263 readonly x MessageQueueMessageSize = 0;
1264 readonly a(ss) Listen = [('Stream', '/var/run/avahi-daemon/socket')];
1265 readonly s Result = 'success';
1266 readonly b ReusePort = false;
1267 readonly s SmackLabel = '';
1268 readonly s SmackLabelIPIn = '';
1269 readonly s SmackLabelIPOut = '';
1270 };
1271 interface org.freedesktop.DBus.Properties {
1272 ...
1273 };
1274 interface org.freedesktop.DBus.Peer {
1275 ...
1276 };
1277 interface org.freedesktop.DBus.Introspectable {
1278 ...
1279 };
1280 };
1281 </programlisting>
1282
1283 <refsect2>
1284 <title>Properties</title>
1285
1286 <para>Most of the properties map directly to the corresponding settings in socket unit files. As socket
1287 units can include <varname>ExecStartPre</varname> (and similar) fields which contain information about
1288 processes to execute. They also share most of the fields related to the execution context that Service
1289 objects expose (see above).</para>
1290
1291 <para>In addition to these properties there are the following:</para>
1292
1293 <para><varname>NAccepted</varname> contains the accumulated number of connections ever accepted on this
1294 socket. This only applies to sockets with <varname>Accept</varname> set to <literal>true</literal>,
1295 i.e. those where systemd is responsible for accepted connections. </para>
1296
1297 <para>Similarly <varname>NConnections</varname> contains the number of currently open connections on
1298 this socket. It only applies only to socket units with <varname>Accept</varname> set to
1299 <literal>true</literal>.</para>
1300
1301 <para><varname>Result</varname> encodes the reason why a socket unit failed if it is in the
1302 <literal>failed</literal> state (see <varname>ActiveState</varname> above). The values
1303 <literal>success</literal>, <literal>resources</literal>, <literal>timeout</literal>,
1304 <literal>exit-code</literal>, <literal>signal</literal> and <literal>core-dump</literal> have the same
1305 meaning as they have for the corresponding field of service units (see above). In addition to that,
1306 the value <literal>service-failed-permanent</literal> indicates that the service of this socket failed
1307 continuously.</para>
1308 </refsect2>
1309 </refsect1>
1310
1311 <refsect1>
1312 <title>Target Unit Objects</title>
1313
1314 <programlisting interface="org.freedesktop.systemd1.Target">
1315 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1316 --object-path /org/freedesktop/systemd1/unit/basic_2etarget
1317
1318 node /org/freedesktop/systemd1/unit/basic_2etarget {
1319 interface org.freedesktop.systemd1.Unit {
1320 ...
1321 };
1322 interface org.freedesktop.systemd1.Target {
1323 methods:
1324 signals:
1325 properties:
1326 };
1327 interface org.freedesktop.DBus.Properties {
1328 ...
1329 };
1330 interface org.freedesktop.DBus.Peer {
1331 ...
1332 };
1333 interface org.freedesktop.DBus.Introspectable {
1334 ...
1335 };
1336 };
1337 </programlisting>
1338
1339 <para>Target units have neither type-specific methods nor properties.</para>
1340 </refsect1>
1341
1342
1343 <refsect1>
1344 <title>Device Unit Objects</title>
1345
1346 <para>All device unit objects implement the <interfacename>org.freedesktop.systemd1.Device</interfacename> interface (described here)
1347 in addition to the generic <interfacename>org.freedesktop.systemd1.Unit</interfacename> interface (see above).</para>
1348
1349 <programlisting interface="org.freedesktop.systemd1.Device">
1350 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1351 --object-path /org/freedesktop/systemd1/unit/dev_2dfoo_2edevice
1352
1353 node /org/freedesktop/systemd1/unit/dev_2d_foo_2edevice {
1354 interface org.freedesktop.systemd1.Unit {
1355 ...
1356 };
1357 interface org.freedesktop.systemd1.Device {
1358 methods:
1359 signals:
1360 properties:
1361 readonly s SysFSPath = '/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb';
1362 };
1363 interface org.freedesktop.DBus.Properties {
1364 ...
1365 };
1366 interface org.freedesktop.DBus.Peer {
1367 ...
1368 };
1369 interface org.freedesktop.DBus.Introspectable {
1370 ...
1371 };
1372 };
1373 </programlisting>
1374
1375 <refsect2>
1376 <title>Properties</title>
1377
1378 <para>Device units only expose a single type-specific property:</para>
1379
1380 <para><varname>SysFSPath</varname> contains the sysfs path of the kernel device this object corresponds
1381 to.</para>
1382 </refsect2>
1383 </refsect1>
1384
1385 <refsect1>
1386 <title>Mount Unit Objects</title>
1387
1388 <para>All mount unit objects implement the <interfacename>org.freedesktop.systemd1.Mount</interfacename>
1389 interface (described here) in addition to the generic
1390 <interfacename>org.freedesktop.systemd1.Unit</interfacename> interface (see above).</para>
1391
1392 <programlisting interface="org.freedesktop.systemd1.Mount">
1393 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1394 --object-path /org/freedesktop/systemd1/unit/home_2emount
1395
1396 node /org/freedesktop/systemd1/unit/home_2emount {
1397 interface org.freedesktop.systemd1.Unit {
1398 ...
1399 };
1400 interface org.freedesktop.systemd1.Mount {
1401 methods:
1402 signals:
1403 properties:
1404 readonly s Where = '/home';
1405 readonly s What = '/dev/mapper/home';
1406 readonly s Options = 'rw,relatime,rw,seclabel,data=ordered';
1407 readonly s Type = 'ext4';
1408 readonly t TimeoutUSec = 90000000;
1409 readonly s Slice = 'system.slice';
1410 readonly s ControlGroup = '/system.slice/home.mount';
1411 readonly a(sasbttuii) ExecMount = [('/bin/mount', ['/bin/mount', '/dev/disk/by-uuid/59a54df8-d070-4907-a4a7-2e0ce05d5c2a', '/home', '-t', 'ext4'], false, 1357656124168977, 11158027, 1357656124274805, 11263855, 608, 1, 0)];
1412 readonly a(sasbttuii) ExecUnmount = [];
1413 readonly a(sasbttuii) ExecRemount = [];
1414 readonly as Environment = [];
1415 readonly a(sb) EnvironmentFiles = [];
1416 readonly u UMask = 18;
1417 readonly t LimitCPU = 18446744073709551615;
1418 readonly t LimitFSIZE = 18446744073709551615;
1419 readonly t LimitDATA = 18446744073709551615;
1420 readonly t LimitSTACK = 18446744073709551615;
1421 readonly t LimitCORE = 18446744073709551615;
1422 readonly t LimitRSS = 18446744073709551615;
1423 readonly t LimitNOFILE = 4096;
1424 readonly t LimitAS = 18446744073709551615;
1425 readonly t LimitNPROC = 61434;
1426 readonly t LimitMEMLOCK = 65536;
1427 readonly t LimitLOCKS = 18446744073709551615;
1428 readonly t LimitSIGPENDING = 61434;
1429 readonly t LimitMSGQUEUE = 819200;
1430 readonly t LimitNICE = 0;
1431 readonly t LimitRTPRIO = 0;
1432 readonly t LimitRTTIME = 18446744073709551615;
1433 readonly s WorkingDirectory = '';
1434 readonly s RootDirectory = '';
1435 readonly i OOMScoreAdjust = 0;
1436 readonly i Nice = 0;
1437 readonly i IOScheduling = 0;
1438 readonly i CPUSchedulingPolicy = 0;
1439 readonly i CPUSchedulingPriority = 0;
1440 readonly ay CPUAffinity = [];
1441 readonly t TimerSlackNSec = 50000;
1442 readonly b CPUSchedulingResetOnFork = false;
1443 readonly b NonBlocking = false;
1444 readonly s StandardInput = 'null';
1445 readonly s StandardOutput = 'journal';
1446 readonly s StandardError = 'inherit';
1447 readonly s TTYPath = '';
1448 readonly b TTYReset = false;
1449 readonly b TTYVHangup = false;
1450 readonly b TTYVTDisallocate = false;
1451 readonly i SyslogPriority = 30;
1452 readonly s SyslogIdentifier = '';
1453 readonly b SyslogLevelPrefix = true;
1454 readonly s Capabilities = '';
1455 readonly i SecureBits = 0;
1456 readonly t CapabilityBoundingSet = 18446744073709551615;
1457 readonly s User = '';
1458 readonly s Group = '';
1459 readonly as SupplementaryGroups = [];
1460 readonly s TCPWrapName = '';
1461 readonly s PAMName = '';
1462 readonly as ReadWriteDirectories = [];
1463 readonly as ReadOnlyDirectories = [];
1464 readonly as InaccessibleDirectories = [];
1465 readonly t MountFlags = 0;
1466 readonly b PrivateTmp = false;
1467 readonly b PrivateNetwork = false;
1468 readonly b SameProcessGroup = true;
1469 readonly s UtmpIdentifier = '';
1470 readonly b IgnoreSIGPIPE = true;
1471 readonly b NoNewPrivileges = false;
1472 readonly au SystemCallFilter = [];
1473 readonly s KillMode = 'control-group';
1474 readonly i KillSignal = 15;
1475 readonly b SendSIGKILL = true;
1476 readonly b SendSIGHUP = false;
1477 readonly b CPUAccounting = false;
1478 readonly t CPUShares = 1024;
1479 readonly b BlockIOAccounting = false;
1480 readonly t BlockIOWeight = 1000;
1481 readonly a(st) BlockIODeviceWeight = [];
1482 readonly a(st) BlockIOReadBandwidth=;
1483 readonly a(st) BlockIOWriteBandwidth=;
1484 readonly b MemoryAccounting = false;
1485 readonly t MemoryLimit = 18446744073709551615;
1486 readonly s DevicePolicy = 'auto';
1487 readonly a(ss) DeviceAllow = [];
1488 readonly u ControlPID = 0;
1489 readonly u DirectoryMode = 493;
1490 readonly s Result = 'success';
1491 };
1492 interface org.freedesktop.DBus.Properties {
1493 ...
1494 };
1495 interface org.freedesktop.DBus.Peer {
1496 ...
1497 };
1498 interface org.freedesktop.DBus.Introspectable {
1499 ...
1500 };
1501 };
1502 </programlisting>
1503
1504 <refsect2>
1505 <title>Properties</title>
1506
1507 <para>Most of the properties map directly to the corresponding settings in mount unit files. As mount
1508 units invoke the <filename>/usr/bin/mount</filename> command, their bus objects include implicit
1509 <varname>ExecMount</varname> (and similar) fields which contain information about processes to
1510 execute. They also share most of the fields related to the execution context that Service objects
1511 expose (see above). In addition to these properties there are the following:</para>
1512
1513 <para><varname>ControlPID</varname> contains the PID of the currently running
1514 <filename>/usr/bin/mount</filename> or <filename>/usr/bin/umount</filename> command if there is one
1515 running, otherwise 0.</para>
1516
1517 <para><varname>Result</varname> contains a value explaining why a mount unit failed if it failed. It
1518 can take the values <literal>success</literal>, <literal>resources</literal>,
1519 <literal>timeout</literal>, <literal>exit-code</literal>, <literal>signal</literal>, or
1520 <literal>core-dump</literal> which have the identical meaning as the corresponding values of the
1521 corresponding field of service unit objects (see above).</para>
1522 </refsect2>
1523 </refsect1>
1524
1525 <refsect1>
1526 <title>Automount Unit Objects</title>
1527
1528 <para>All automount unit objects implement the
1529 <interfacename>org.freedesktop.systemd1.Automount</interfacename> interface (described here) in addition
1530 to the generic <interfacename>org.freedesktop.systemd1.Unit</interfacename> interface (see above).</para>
1531
1532 <programlisting interface="org.freedesktop.systemd1.Automount">
1533 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1534 --object-path /org/freedesktop/systemd1/unit/proc_2dsys_2dfs_2dbinfmt_5fmisc_2eautomount
1535
1536 node /org/freedesktop/systemd1/unit/proc_2dsys_2dfs_2dbinfmt_5fmisc_2eautomount {
1537 interface org.freedesktop.systemd1.Unit {
1538 ...
1539 };
1540 interface org.freedesktop.systemd1.Automount {
1541 methods:
1542 signals:
1543 properties:
1544 readonly s Where = '/proc/sys/fs/binfmt_misc';
1545 readonly u DirectoryMode = 493;
1546 readonly s Result = 'success';
1547 };
1548 interface org.freedesktop.DBus.Properties {
1549 ...
1550 };
1551 interface org.freedesktop.DBus.Peer {
1552 ...
1553 };
1554 interface org.freedesktop.DBus.Introspectable {
1555 ...
1556 };
1557 };
1558 </programlisting>
1559
1560 <refsect2>
1561 <title>Properties</title>
1562
1563 <para>Most of the properties map directly to the corresponding settings in the automount unit
1564 files.</para>
1565
1566 <para><varname>Result</varname> knows the values <literal>success</literal> and
1567 <literal>resources</literal> at this time. They have the same meanings as the corresponding values of
1568 the corresponding field of the Service object.</para>
1569 </refsect2>
1570 </refsect1>
1571
1572
1573 <refsect1>
1574 <title>Timer Unit Objects</title>
1575
1576 <para>All timer unit objects implement the <interfacename>org.freedesktop.systemd1.Timer</interfacename>
1577 interface (described here) in addition to the generic
1578 <interfacename>org.freedesktop.systemd1.Unit</interfacename> interface (see above).</para>
1579
1580 <programlisting interface="org.freedesktop.systemd1.Timer">
1581 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1582 --object-path /org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer
1583
1584 node /org/freedesktop/systemd1/unit/systemd_2dtmpfiles_2dclean_2etimer {
1585 interface org.freedesktop.systemd1.Unit {
1586 ...
1587 };
1588 interface org.freedesktop.systemd1.Timer {
1589 readonly s Unit = 'systemd-tmpfiles-clean.service';
1590 readonly a(stt) TimersMonotonic = [('OnUnitActiveUSec', 86400000000, 173700033104), ('OnBootUSec', 900000000, 900000000)];
1591 readonly a(sst) TimersCalendar = [];
1592 readonly t NextElapseUSecRealtime = 0;
1593 readonly t NextElapseUSecMonotonic = 173700033104;
1594 readonly s Result = 'success';
1595 };
1596 interface org.freedesktop.DBus.Properties {
1597 ...
1598 };
1599 interface org.freedesktop.DBus.Peer {
1600 ...
1601 };
1602 interface org.freedesktop.DBus.Introspectable {
1603 ...
1604 };
1605 };
1606 </programlisting>
1607
1608 <refsect2>
1609 <title>Properties</title>
1610
1611 <para><varname>Unit</varname> contains the name of the unit to activate when the timer elapses.</para>
1612
1613 <para><varname>TimersMonotonic</varname> contains an array of structs that contain information about
1614 all monotonic timers of this timer unit. The structs contain a string identifying the timer base, which
1615 is one of <literal>OnActiveUSec</literal>, <literal>OnBootUSec</literal>,
1616 <literal>OnStartupUSec</literal>, <literal>OnUnitActiveUSec</literal>, or
1617 <literal>OnUnitInactiveUSec</literal> which correspond to the settings of the same names in the timer
1618 unit files; the microsecond offset from this timer base in monotonic time; the next elapsation point on
1619 the <constant>CLOCK_MONOTONIC</constant> clock, relative to its epoch.</para>
1620
1621 <para><varname>TimersCalendar</varname> contains an array of structs that contain information about all
1622 realtime/calendar timers of this timer unit. The structs contain a string identifying the timer base,
1623 which may only be <literal>OnCalendar</literal> for now; the calendar specification string; the next
1624 elapsation point on the <constant>CLOCK_REALTIME</constant> clock, relative to its epoch.</para>
1625
1626 <para><varname>NextElapseUSecRealtime</varname> contains the next elapsation point on the
1627 <constant>CLOCK_REALTIME</constant> clock in miscroseconds since the epoch, or 0 if this timer event
1628 does not include at least one calendar event.</para>
1629
1630 <para>Similarly, <varname>NextElapseUSecMonotonic</varname> contains the next elapsation point on the
1631 <constant>CLOCK_MONOTONIC</constant> clock in microseconds since the epoch, or 0 if this timer event
1632 does not include at least one monotonic event.</para>
1633
1634 <para><varname>Result</varname> knows the values <literal>success</literal> and
1635 <literal>resources</literal> with the same meanings as the matching values of the corresponding
1636 property of the service interface.</para>
1637 </refsect2>
1638 </refsect1>
1639
1640 <refsect1>
1641 <title>Swap Unit Objects</title>
1642
1643 <para>All swap unit objects implement the <interfacename>org.freedesktop.systemd1.Swap</interfacename>
1644 interface (described here) in addition to the generic
1645 <interfacename>org.freedesktop.systemd1.Unit</interfacename> interface (see above).</para>
1646
1647 <programlisting interface="org.freedesktop.systemd1.Swap">
1648 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1649 --object-path /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap
1650
1651 node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
1652 interface org.freedesktop.systemd1.Unit {
1653 ...
1654 };
1655 interface org.freedesktop.systemd1.Swap {
1656 methods:
1657 signals:
1658 properties:
1659 readonly s What = '/dev/sda3';
1660 readonly i Priority = -1;
1661 readonly t TimeoutUSec = 90000000;
1662 readonly s Slice = 'system.slice';
1663 readonly s ControlGroup = '';
1664 readonly a(sasbttuii) ExecActivate = [];
1665 readonly a(sasbttuii) ExecDeactivate = [];
1666 readonly as Environment = [];
1667 readonly a(sb) EnvironmentFiles = [];
1668 readonly u UMask = 18;
1669 readonly t LimitCPU = 18446744073709551615;
1670 readonly t LimitFSIZE = 18446744073709551615;
1671 readonly t LimitDATA = 18446744073709551615;
1672 readonly t LimitSTACK = 18446744073709551615;
1673 readonly t LimitCORE = 18446744073709551615;
1674 readonly t LimitRSS = 18446744073709551615;
1675 readonly t LimitNOFILE = 4096;
1676 readonly t LimitAS = 18446744073709551615;
1677 readonly t LimitNPROC = 61434;
1678 readonly t LimitMEMLOCK = 65536;
1679 readonly t LimitLOCKS = 18446744073709551615;
1680 readonly t LimitSIGPENDING = 61434;
1681 readonly t LimitMSGQUEUE = 819200;
1682 readonly t LimitNICE = 0;
1683 readonly t LimitRTPRIO = 0;
1684 readonly t LimitRTTIME = 18446744073709551615;
1685 readonly s WorkingDirectory = '';
1686 readonly s RootDirectory = '';
1687 readonly i OOMScoreAdjust = 0;
1688 readonly i Nice = 0;
1689 readonly i IOScheduling = 0;
1690 readonly i CPUSchedulingPolicy = 0;
1691 readonly i CPUSchedulingPriority = 0;
1692 readonly ay CPUAffinity = [];
1693 readonly t TimerSlackNS = 50000;
1694 readonly b CPUSchedulingResetOnFork = false;
1695 readonly b NonBlocking = false;
1696 readonly s StandardInput = 'null';
1697 readonly s StandardOutput = 'journal';
1698 readonly s StandardError = 'inherit';
1699 readonly s TTYPath = '';
1700 readonly b TTYReset = false;
1701 readonly b TTYVHangup = false;
1702 readonly b TTYVTDisallocate = false;
1703 readonly i SyslogPriority = 30;
1704 readonly s SyslogIdentifier = '';
1705 readonly b SyslogLevelPrefix = true;
1706 readonly s Capabilities = '';
1707 readonly i SecureBits = 0;
1708 readonly t CapabilityBoundingSet = 18446744073709551615;
1709 readonly s User = '';
1710 readonly s Group = '';
1711 readonly as SupplementaryGroups = [];
1712 readonly s TCPWrapName = '';
1713 readonly s PAMName = '';
1714 readonly as ReadWriteDirectories = [];
1715 readonly as ReadOnlyDirectories = [];
1716 readonly as InaccessibleDirectories = [];
1717 readonly t MountFlags = 0;
1718 readonly b PrivateTmp = false;
1719 readonly b PrivateNetwork = false;
1720 readonly b SameProcessGroup = false;
1721 readonly s KillMode = 'control-group';
1722 readonly i KillSignal = 15;
1723 readonly s UtmpIdentifier = '';
1724 readonly b IgnoreSIGPIPE = true;
1725 readonly b NoNewPrivileges = false;
1726 readonly au SystemCallFilter = [];
1727 readonly s KillMode = 'control-group';
1728 readonly i KillSignal = 15;
1729 readonly b SendSIGKILL = true;
1730 readonly b SendSIGHUP = false;
1731 readonly b CPUAccounting = false;
1732 readonly t CPUShares = 1024;
1733 readonly b BlockIOAccounting = false;
1734 readonly t BlockIOWeight = 1000;
1735 readonly a(st) BlockIODeviceWeight = [];
1736 readonly a(st) BlockIOReadBandwidth=;
1737 readonly a(st) BlockIOWriteBandwidth=;
1738 readonly b MemoryAccounting = false;
1739 readonly t MemoryLimit = 18446744073709551615;
1740 readonly s DevicePolicy = 'auto';
1741 readonly a(ss) DeviceAllow = [];
1742 readonly u ControlPID = 0;
1743 readonly s Result = 'success';
1744 };
1745 interface org.freedesktop.DBus.Properties {
1746 ...
1747 };
1748 interface org.freedesktop.DBus.Peer {
1749 ...
1750 };
1751 interface org.freedesktop.DBus.Introspectable {
1752 ...
1753 };
1754 };
1755 </programlisting>
1756
1757 <refsect2>
1758 <title>Properties</title>
1759
1760 <para>Most of the properties map directly to the corresponding settings in swap unit files. As mount
1761 units invoke the
1762 <citerefentry><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry> command,
1763 their bus objects include implicit <varname>ExecActivate</varname> (and similar) fields which contain
1764 information about processes to execute. They also share most of the fields related to the execution
1765 context that Service objects expose (see above). In addition to these properties there are the
1766 following:</para>
1767
1768 <para><varname>ControlPID</varname> contains the PID of the currently running
1769 <citerefentry><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry> or
1770 <citerefentry><refentrytitle>swapoff</refentrytitle><manvolnum>8</manvolnum></citerefentry> command if
1771 there is one running, otherwise 0.</para>
1772
1773 <para><varname>Result</varname> contains a value explaining why a mount unit failed if it failed. It
1774 can take the values <literal>success</literal>, <literal>resources</literal>,
1775 <literal>timeout</literal>, <literal>exit-code</literal>, <literal>signal</literal>, or
1776 <literal>core-dump</literal> which have the identical meanings as the corresponding values of the
1777 corresponding field of service unit objects (see above).</para>
1778 </refsect2>
1779 </refsect1>
1780
1781
1782 <refsect1>
1783 <title>Path Unit Objects</title>
1784
1785 <programlisting interface="org.freedesktop.systemd1.Path">
1786 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1787 --object-path /org/freedesktop/systemd1/unit/cups_2epath
1788
1789 node /org/freedesktop/systemd1/unit/cups_2epath {
1790 interface org.freedesktop.systemd1.Unit {
1791 ...
1792 };
1793 interface org.freedesktop.systemd1.Path {
1794 methods:
1795 signals:
1796 properties:
1797 readonly s Unit = 'cups.service';
1798 readonly a(ss) Paths = [('PathExistsGlob', '/var/spool/cups/d*')];
1799 readonly b MakeDirectory = false;
1800 readonly u DirectoryMode = 493;
1801 readonly s Result = 'success';
1802 };
1803 interface org.freedesktop.DBus.Properties {
1804 ...
1805 };
1806 interface org.freedesktop.DBus.Peer {
1807 ...
1808 };
1809 interface org.freedesktop.DBus.Introspectable {
1810 ...
1811 };
1812 };
1813 </programlisting>
1814
1815 <refsect2>
1816 <title>Properties</title>
1817
1818 <para>Most properties correspond directly with the matching settings in path unit files.</para>
1819
1820 <para>The others:</para>
1821
1822 <para><varname>Paths</varname> contains an array of structs. Each struct contains the condition to
1823 watch, which can be one of <literal>PathExists</literal>, <literal>PathExistsGlob</literal>,
1824 <literal>PathChanged</literal>, <literal>PathModified</literal>, or <literal>DirectoryNotEmpty</literal>
1825 which correspond directly to the matching settings in the path unit files; and the path to watch,
1826 possibly including glob expressions.</para>
1827
1828 <para><varname>Result</varname> contains a result value which can be <literal>success</literal> or
1829 <literal>resources</literal> which have the same meaning as the corresponding field of the Service
1830 interface.</para>
1831 </refsect2>
1832 </refsect1>
1833
1834 <refsect1>
1835 <title>Slice Unit Objects</title>
1836
1837 <para>All slice unit objects implement the <interfacename>org.freedesktop.systemd1.Slice</interfacename>
1838 interface (described here) in addition to the generic
1839 <interfacename>org.freedesktop.systemd1.Unit</interfacename> interface (see above).</para>
1840
1841 <programlisting interface="org.freedesktop.systemd1.Slice">
1842 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1843 --object-path /org/freedesktop/systemd1/unit/system_2eslice
1844
1845 node /org/freedesktop/systemd1/unit/system_2eslice {
1846 interface org.freedesktop.systemd1.Unit {
1847 ...
1848 };
1849 interface org.freedesktop.systemd1.Slice {
1850 methods:
1851 signals:
1852 properties:
1853 readonly s Slice = '-.slice';
1854 readonly s ControlGroup = '/system.slice';
1855 readonly b CPUAccounting = false;
1856 readonly t CPUShares = 1024;
1857 readonly b BlockIOAccounting = false;
1858 readonly t BlockIOWeight = 1000;
1859 readonly a(st) BlockIODeviceWeight = [];
1860 readonly a(st) BlockIOReadBandwidth=;
1861 readonly a(st) BlockIOWriteBandwidth=;
1862 readonly b MemoryAccounting = false;
1863 readonly t MemoryLimit = 18446744073709551615;
1864 readonly s DevicePolicy = 'auto';
1865 readonly a(ss) DeviceAllow = [];
1866 };
1867 interface org.freedesktop.DBus.Properties {
1868 ...
1869 };
1870 interface org.freedesktop.DBus.Peer {
1871 ...
1872 };
1873 interface org.freedesktop.DBus.Introspectable {
1874 ...
1875 };
1876 };
1877 </programlisting>
1878
1879 <refsect2>
1880 <title>Properties</title>
1881
1882 <para>Most properties correspond directly with the matching settings in slice unit files.</para>
1883 </refsect2>
1884 </refsect1>
1885
1886 <refsect1>
1887 <title>Scope Unit Objects</title>
1888
1889 <para>All slice unit objects implement the <interfacename>org.freedesktop.systemd1.Scope</interfacename>
1890 interface (described here) in addition to the generic
1891 <interfacename>org.freedesktop.systemd1.Unit</interfacename> interface (see above).</para>
1892
1893 <programlisting interface="org.freedesktop.systemd1.Scope">
1894 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1895 --object-path /org/freedesktop/systemd1/unit/session_2d1_2escope
1896
1897 node /org/freedesktop/systemd1/unit/session_2d1_2escope {
1898 interface org.freedesktop.systemd1.Unit {
1899 ...
1900 };
1901 interface org.freedesktop.systemd1.Scope {
1902 methods:
1903 Abandon();
1904 signals:
1905 RequestStop();
1906 properties:
1907 readonly s Slice = 'user-1000.slice';
1908 readonly s ControlGroup = '/user.slice/user-1000.slice/session-1.scope';
1909 readonly t TimeoutStopUSec = 500000;
1910 readonly s KillMode = 'none';
1911 readonly i KillSignal = 15;
1912 readonly b SendSIGKILL = true;
1913 readonly b SendSIGHUP = true;
1914 readonly b CPUAccounting = false;
1915 readonly t CPUShares = 1024;
1916 readonly b BlockIOAccounting = false;
1917 readonly t BlockIOWeight = 1000;
1918 readonly a(st) BlockIODeviceWeight = [];
1919 readonly a(st) BlockIOReadBandwidth=;
1920 readonly a(st) BlockIOWriteBandwidth=;
1921 readonly b MemoryAccounting = false;
1922 readonly t MemoryLimit = 18446744073709551615;
1923 readonly s DevicePolicy = 'auto';
1924 readonly a(ss) DeviceAllow = [];
1925 readonly s Result = 'success';
1926 readonly s Controller = '';
1927
1928
1929 };
1930 interface org.freedesktop.DBus.Properties {
1931 ...
1932 };
1933 interface org.freedesktop.DBus.Peer {
1934 ...
1935 };
1936 interface org.freedesktop.DBus.Introspectable {
1937 ...
1938 };
1939 };
1940 </programlisting>
1941
1942 <refsect2>
1943 <title>Methods</title>
1944
1945 <para><function>Abandon()</function> may be used to place a scope unit in the "abandoned" state. This
1946 may be used to inform the system manager that the manager that created the scope lost interest in the
1947 scope (for example, because it is terminating), without wanting to shut down the scope entirely.</para>
1948 </refsect2>
1949
1950 <refsect2>
1951 <title>Signals</title>
1952
1953 <para><function>RequestStop</function> is sent to the peer that is configured in the
1954 <varname>Controller</varname> property when systemd is requested to terminate the scope unit. A program
1955 registering a scope can use this to cleanly shut down the processes it added to the scope instead of
1956 letting systemd do it with the usual <constant>SIGTERM</constant> logic.</para>
1957 </refsect2>
1958
1959 <refsect2>
1960 <title>Properties</title>
1961
1962 <para>All properties correspond directly with the matching properties of service units.</para>
1963
1964 <para><varname>Controller</varname> contains the bus name (unique or well-known) that is notified when
1965 the scope unit is to be shut down via a <function>RequestStop</function> signal (see below). This is
1966 set when the scope is created. If not set, the scope's processes will terminated with
1967 <constant>SIGTERM</constant> directly.</para>
1968 </refsect2>
1969 </refsect1>
1970
1971
1972 <refsect1>
1973 <title>Job Objects</title>
1974
1975 <para>Job objects encapsulate scheduled or running jobs. Each unit can have none or one jobs in the
1976 execution queue. Each job is attached to exactly one unit.</para>
1977
1978 <programlisting>
1979 $ gdbus introspect --system --dest org.freedesktop.systemd1 \
1980 --object-path /org/freedesktop/systemd1/job/1292
1981
1982 node /org/freedesktop/systemd1/job/1292 {
1983 interface org.freedesktop.systemd1.Job {
1984 methods:
1985 Cancel();
1986 signals:
1987 properties:
1988 readonly u Id = 1292;
1989 readonly (so) Unit = ('slow.service', '/org/freedesktop/systemd1/unit/slow_2eservice');
1990 readonly s JobType = 'start';
1991 readonly s State = 'running';
1992 };
1993 interface org.freedesktop.DBus.Properties {
1994 ...
1995 };
1996 interface org.freedesktop.DBus.Peer {
1997 ...
1998 };
1999 interface org.freedesktop.DBus.Introspectable {
2000 ...
2001 };
2002 };
2003 </programlisting>
2004
2005 <refsect2>
2006 <title>Methods</title>
2007
2008 <para><function>Cancel()</function> cancels the job. Note that this will remove a job from the queue if
2009 it is not yet executed but generally will not cause a job that is already in the process of being
2010 executed to be aborted. This operation may also be requested via the <function>CancelJob()</function>
2011 method of the Manager object (see above), which is sometimes useful to reduce roundtrips.</para>
2012 </refsect2>
2013
2014 <refsect2>
2015 <title>Properties</title>
2016
2017 <para><varname>Id</varname> is the numeric Id of the job. During the runtime of a systemd instance each
2018 numeric ID is only assigned once.</para>
2019
2020 <para><varname>Unit</varname> refers to the unit this job belongs to. It is a structure consisting of
2021 the name of the unit and a bus path to the unit's object.</para>
2022
2023 <para><varname>JobType</varname> refers to the job's type and is one of <literal>start</literal>,
2024 <literal>verify-active</literal>, <literal>stop</literal>, <literal>reload</literal>,
2025 <literal>restart</literal>, <literal>try-restart</literal>, or <literal>reload-or-start</literal>. Note
2026 that later versions might define additional values.</para>
2027
2028 <para><varname>State</varname> refers to the job's state and is one of <literal>waiting</literal> and
2029 <literal>running</literal>. The former indicates that a job is currently queued but has not begun to
2030 execute yet. The latter indicates that a job is currently being executed.</para>
2031 </refsect2>
2032 </refsect1>
2033
2034 <refsect1>
2035 <title>Versioning</title>
2036
2037 <para>These D-Bus interfaces follow <ulink url="http://0pointer.de/blog/projects/versioning-dbus.html">
2038 the usual interface versioning guidelines</ulink>.</para>
2039 </refsect1>
2040 </refentry>