]> git.ipfire.org Git - thirdparty/systemd.git/blob - man/busctl.xml
test-hostname-util: add assert_se's to make coverity happy
[thirdparty/systemd.git] / man / busctl.xml
1 <?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4
5 <!--
6 SPDX-License-Identifier: LGPL-2.1+
7
8 This file is part of systemd.
9
10 Copyright 2014 Zbigniew Jędrzejewski-Szmek
11
12 systemd is free software; you can redistribute it and/or modify it
13 under the terms of the GNU Lesser General Public License as published by
14 the Free Software Foundation; either version 2.1 of the License, or
15 (at your option) any later version.
16
17 systemd is distributed in the hope that it will be useful, but
18 WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 Lesser General Public License for more details.
21
22 You should have received a copy of the GNU Lesser General Public License
23 along with systemd; If not, see <http://www.gnu.org/licenses/>.
24 -->
25
26 <refentry id="busctl"
27 xmlns:xi="http://www.w3.org/2001/XInclude">
28
29 <refentryinfo>
30 <title>busctl</title>
31 <productname>systemd</productname>
32
33 <authorgroup>
34 <author>
35 <contrib>A monkey with a typewriter</contrib>
36 <firstname>Zbigniew</firstname>
37 <surname>Jędrzejewski-Szmek</surname>
38 <email>zbyszek@in.waw.pl</email>
39 </author>
40 </authorgroup>
41 </refentryinfo>
42
43 <refmeta>
44 <refentrytitle>busctl</refentrytitle>
45 <manvolnum>1</manvolnum>
46 </refmeta>
47
48 <refnamediv>
49 <refname>busctl</refname>
50 <refpurpose>Introspect the bus</refpurpose>
51 </refnamediv>
52
53 <refsynopsisdiv>
54 <cmdsynopsis>
55 <command>busctl</command>
56 <arg choice="opt" rep="repeat">OPTIONS</arg>
57 <arg choice="opt">COMMAND</arg>
58 <arg choice="opt" rep="repeat"><replaceable>NAME</replaceable></arg>
59 </cmdsynopsis>
60 </refsynopsisdiv>
61
62 <refsect1>
63 <title>Description</title>
64
65 <para><command>busctl</command> may be used to
66 introspect and monitor the D-Bus bus.</para>
67 </refsect1>
68
69 <refsect1>
70 <title>Options</title>
71
72 <para>The following options are understood:</para>
73
74 <variablelist>
75 <varlistentry>
76 <term><option>--address=<replaceable>ADDRESS</replaceable></option></term>
77
78 <listitem><para>Connect to the bus specified by
79 <replaceable>ADDRESS</replaceable> instead of using suitable
80 defaults for either the system or user bus (see
81 <option>--system</option> and <option>--user</option>
82 options).</para></listitem>
83 </varlistentry>
84
85 <varlistentry>
86 <term><option>--show-machine</option></term>
87
88 <listitem><para>When showing the list of peers, show a
89 column containing the names of containers they belong to.
90 See
91 <citerefentry><refentrytitle>systemd-machined.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
92 </para></listitem>
93 </varlistentry>
94
95 <varlistentry>
96 <term><option>--unique</option></term>
97
98 <listitem><para>When showing the list of peers, show only
99 "unique" names (of the form
100 <literal>:<replaceable>number</replaceable>.<replaceable>number</replaceable></literal>).
101 </para></listitem>
102 </varlistentry>
103
104 <varlistentry>
105 <term><option>--acquired</option></term>
106
107 <listitem><para>The opposite of <option>--unique</option>
108 only "well-known" names will be shown.</para></listitem>
109 </varlistentry>
110
111 <varlistentry>
112 <term><option>--activatable</option></term>
113
114 <listitem><para>When showing the list of peers, show only
115 peers which have actually not been activated yet, but may be
116 started automatically if accessed.</para>
117 </listitem>
118 </varlistentry>
119
120 <varlistentry>
121 <term><option>--match=<replaceable>MATCH</replaceable></option></term>
122
123 <listitem><para>When showing messages being exchanged, show only the
124 subset matching <replaceable>MATCH</replaceable>.
125 See
126 <citerefentry><refentrytitle>sd_bus_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
127 </para></listitem>
128 </varlistentry>
129
130 <varlistentry>
131 <term><option>--size=</option></term>
132
133 <listitem>
134 <para>When used with the <command>capture</command> command,
135 specifies the maximum bus message size to capture
136 ("snaplen"). Defaults to 4096 bytes.</para>
137 </listitem>
138 </varlistentry>
139
140 <varlistentry>
141 <term><option>--list</option></term>
142
143 <listitem>
144 <para>When used with the <command>tree</command> command, shows a
145 flat list of object paths instead of a tree.</para>
146 </listitem>
147 </varlistentry>
148
149 <varlistentry>
150 <term><option>--quiet</option></term>
151
152 <listitem>
153 <para>When used with the <command>call</command> command,
154 suppresses display of the response message payload. Note that even
155 if this option is specified, errors returned will still be
156 printed and the tool will indicate success or failure with
157 the process exit code.</para>
158 </listitem>
159 </varlistentry>
160
161 <varlistentry>
162 <term><option>--verbose</option></term>
163
164 <listitem>
165 <para>When used with the <command>call</command> or
166 <command>get-property</command> command, shows output in a
167 more verbose format.</para>
168 </listitem>
169 </varlistentry>
170
171 <varlistentry>
172 <term><option>--expect-reply=</option><replaceable>BOOL</replaceable></term>
173
174 <listitem>
175 <para>When used with the <command>call</command> command,
176 specifies whether <command>busctl</command> shall wait for
177 completion of the method call, output the returned method
178 response data, and return success or failure via the process
179 exit code. If this is set to <literal>no</literal>, the
180 method call will be issued but no response is expected, the
181 tool terminates immediately, and thus no response can be
182 shown, and no success or failure is returned via the exit
183 code. To only suppress output of the reply message payload,
184 use <option>--quiet</option> above. Defaults to
185 <literal>yes</literal>.</para>
186 </listitem>
187 </varlistentry>
188
189 <varlistentry>
190 <term><option>--auto-start=</option><replaceable>BOOL</replaceable></term>
191
192 <listitem>
193 <para>When used with the <command>call</command> command, specifies
194 whether the method call should implicitly activate the
195 called service, should it not be running yet but is
196 configured to be auto-started. Defaults to
197 <literal>yes</literal>.</para>
198 </listitem>
199 </varlistentry>
200
201 <varlistentry>
202 <term><option>--allow-interactive-authorization=</option><replaceable>BOOL</replaceable></term>
203
204 <listitem>
205 <para>When used with the <command>call</command> command,
206 specifies whether the services may enforce interactive
207 authorization while executing the operation, if the security
208 policy is configured for this. Defaults to
209 <literal>yes</literal>.</para>
210 </listitem>
211 </varlistentry>
212
213 <varlistentry>
214 <term><option>--timeout=</option><replaceable>SECS</replaceable></term>
215
216 <listitem>
217 <para>When used with the <command>call</command> command,
218 specifies the maximum time to wait for method call
219 completion. If no time unit is specified, assumes
220 seconds. The usual other units are understood, too (ms, us,
221 s, min, h, d, w, month, y). Note that this timeout does not
222 apply if <option>--expect-reply=no</option> is used, as the
223 tool does not wait for any reply message then. When not
224 specified or when set to 0, the default of
225 <literal>25s</literal> is assumed.</para>
226 </listitem>
227 </varlistentry>
228
229 <varlistentry>
230 <term><option>--augment-creds=</option><replaceable>BOOL</replaceable></term>
231
232 <listitem>
233 <para>Controls whether credential data reported by
234 <command>list</command> or <command>status</command> shall
235 be augmented with data from
236 <filename>/proc</filename>. When this is turned on, the data
237 shown is possibly inconsistent, as the data read from
238 <filename>/proc</filename> might be more recent than the rest of
239 the credential information. Defaults to <literal>yes</literal>.</para>
240 </listitem>
241 </varlistentry>
242
243 <xi:include href="user-system-options.xml" xpointer="user" />
244 <xi:include href="user-system-options.xml" xpointer="system" />
245 <xi:include href="user-system-options.xml" xpointer="host" />
246 <xi:include href="user-system-options.xml" xpointer="machine" />
247
248 <xi:include href="standard-options.xml" xpointer="no-pager" />
249 <xi:include href="standard-options.xml" xpointer="no-legend" />
250 <xi:include href="standard-options.xml" xpointer="help" />
251 <xi:include href="standard-options.xml" xpointer="version" />
252 </variablelist>
253 </refsect1>
254
255 <refsect1>
256 <title>Commands</title>
257
258 <para>The following commands are understood:</para>
259
260 <variablelist>
261 <varlistentry>
262 <term><command>list</command></term>
263
264 <listitem><para>Show all peers on the bus, by their service
265 names. By default, shows both unique and well-known names, but
266 this may be changed with the <option>--unique</option> and
267 <option>--acquired</option> switches. This is the default
268 operation if no command is specified.</para></listitem>
269 </varlistentry>
270
271 <varlistentry>
272 <term><command>status</command> <arg choice="opt"><replaceable>SERVICE</replaceable></arg></term>
273
274 <listitem><para>Show process information and credentials of a
275 bus service (if one is specified by its unique or well-known
276 name), a process (if one is specified by its numeric PID), or
277 the owner of the bus (if no parameter is
278 specified).</para></listitem>
279 </varlistentry>
280
281 <varlistentry>
282 <term><command>monitor</command> <arg choice="opt" rep="repeat"><replaceable>SERVICE</replaceable></arg></term>
283
284 <listitem><para>Dump messages being exchanged. If
285 <replaceable>SERVICE</replaceable> is specified, show messages
286 to or from this peer, identified by its well-known or unique
287 name. Otherwise, show all messages on the bus. Use Ctrl-C to
288 terminate the dump.</para></listitem>
289 </varlistentry>
290
291 <varlistentry>
292 <term><command>capture</command> <arg choice="opt" rep="repeat"><replaceable>SERVICE</replaceable></arg></term>
293
294 <listitem><para>Similar to <command>monitor</command> but
295 writes the output in pcap format (for details, see the <ulink
296 url="https://wiki.wireshark.org/Development/LibpcapFileFormat">Libpcap
297 File Format</ulink> description). Make sure to redirect
298 standard output to a file. Tools like
299 <citerefentry project='die-net'><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry>
300 may be used to dissect and view the resulting
301 files.</para></listitem>
302 </varlistentry>
303
304 <varlistentry>
305 <term><command>tree</command> <arg choice="opt" rep="repeat"><replaceable>SERVICE</replaceable></arg></term>
306
307 <listitem><para>Shows an object tree of one or more
308 services. If <replaceable>SERVICE</replaceable> is specified,
309 show object tree of the specified services only. Otherwise,
310 show all object trees of all services on the bus that acquired
311 at least one well-known name.</para></listitem>
312 </varlistentry>
313
314 <varlistentry>
315 <term><command>introspect</command> <arg choice="plain"><replaceable>SERVICE</replaceable></arg> <arg choice="plain"><replaceable>OBJECT</replaceable></arg> <arg choice="opt"><replaceable>INTERFACE</replaceable></arg></term>
316
317 <listitem><para>Show interfaces, methods, properties and
318 signals of the specified object (identified by its path) on
319 the specified service. If the interface argument is passed, the
320 output is limited to members of the specified
321 interface.</para></listitem>
322 </varlistentry>
323
324 <varlistentry>
325 <term><command>call</command> <arg choice="plain"><replaceable>SERVICE</replaceable></arg> <arg choice="plain"><replaceable>OBJECT</replaceable></arg> <arg choice="plain"><replaceable>INTERFACE</replaceable></arg> <arg choice="plain"><replaceable>METHOD</replaceable></arg> <arg choice="opt"><replaceable>SIGNATURE</replaceable> <arg choice="opt" rep="repeat"><replaceable>ARGUMENT</replaceable></arg></arg></term>
326
327 <listitem><para>Invoke a method and show the response. Takes a
328 service name, object path, interface name and method name. If
329 parameters shall be passed to the method call, a signature
330 string is required, followed by the arguments, individually
331 formatted as strings. For details on the formatting used, see
332 below. To suppress output of the returned data, use the
333 <option>--quiet</option> option.</para></listitem>
334 </varlistentry>
335
336 <varlistentry>
337 <term><command>get-property</command> <arg choice="plain"><replaceable>SERVICE</replaceable></arg> <arg choice="plain"><replaceable>OBJECT</replaceable></arg> <arg choice="plain"><replaceable>INTERFACE</replaceable></arg> <arg choice="plain" rep="repeat"><replaceable>PROPERTY</replaceable></arg></term>
338
339 <listitem><para>Retrieve the current value of one or more
340 object properties. Takes a service name, object path,
341 interface name and property name. Multiple properties may be
342 specified at once, in which case their values will be shown one
343 after the other, separated by newlines. The output is, by
344 default, in terse format. Use <option>--verbose</option> for a
345 more elaborate output format.</para></listitem>
346 </varlistentry>
347
348 <varlistentry>
349 <term><command>set-property</command> <arg choice="plain"><replaceable>SERVICE</replaceable></arg> <arg choice="plain"><replaceable>OBJECT</replaceable></arg> <arg choice="plain"><replaceable>INTERFACE</replaceable></arg> <arg choice="plain"><replaceable>PROPERTY</replaceable></arg> <arg choice="plain"><replaceable>SIGNATURE</replaceable></arg> <arg choice="plain" rep="repeat"><replaceable>ARGUMENT</replaceable></arg></term>
350
351 <listitem><para>Set the current value of an object
352 property. Takes a service name, object path, interface name,
353 property name, property signature, followed by a list of
354 parameters formatted as strings.</para></listitem>
355 </varlistentry>
356
357 <varlistentry>
358 <term><command>help</command></term>
359
360 <listitem><para>Show command syntax help.</para></listitem>
361 </varlistentry>
362 </variablelist>
363 </refsect1>
364
365 <refsect1>
366 <title>Parameter Formatting</title>
367
368 <para>The <command>call</command> and
369 <command>set-property</command> commands take a signature string
370 followed by a list of parameters formatted as string (for details
371 on D-Bus signature strings, see the <ulink
372 url="http://dbus.freedesktop.org/doc/dbus-specification.html#type-system">Type
373 system chapter of the D-Bus specification</ulink>). For simple
374 types, each parameter following the signature should simply be the
375 parameter's value formatted as string. Positive boolean values may
376 be formatted as <literal>true</literal>, <literal>yes</literal>,
377 <literal>on</literal>, or <literal>1</literal>; negative boolean
378 values may be specified as <literal>false</literal>,
379 <literal>no</literal>, <literal>off</literal>, or
380 <literal>0</literal>. For arrays, a numeric argument for the
381 number of entries followed by the entries shall be specified. For
382 variants, the signature of the contents shall be specified,
383 followed by the contents. For dictionaries and structs, the
384 contents of them shall be directly specified.</para>
385
386 <para>For example,
387 <programlisting>s jawoll</programlisting> is the formatting
388 of a single string <literal>jawoll</literal>.</para>
389
390 <para>
391 <programlisting>as 3 hello world foobar</programlisting>
392 is the formatting of a string array with three entries,
393 <literal>hello</literal>, <literal>world</literal> and
394 <literal>foobar</literal>.</para>
395
396 <para>
397 <programlisting>a{sv} 3 One s Eins Two u 2 Yes b true</programlisting>
398 is the formatting of a dictionary
399 array that maps strings to variants, consisting of three
400 entries. The string <literal>One</literal> is assigned the
401 string <literal>Eins</literal>. The string
402 <literal>Two</literal> is assigned the 32-bit unsigned
403 integer 2. The string <literal>Yes</literal> is assigned a
404 positive boolean.</para>
405
406 <para>Note that the <command>call</command>,
407 <command>get-property</command>, <command>introspect</command>
408 commands will also generate output in this format for the returned
409 data. Since this format is sometimes too terse to be easily
410 understood, the <command>call</command> and
411 <command>get-property</command> commands may generate a more
412 verbose, multi-line output when passed the
413 <option>--verbose</option> option.</para>
414 </refsect1>
415
416 <refsect1>
417 <title>Examples</title>
418
419 <example>
420 <title>Write and Read a Property</title>
421
422 <para>The following two commands first write a property and then
423 read it back. The property is found on the
424 <literal>/org/freedesktop/systemd1</literal> object of the
425 <literal>org.freedesktop.systemd1</literal> service. The name of
426 the property is <literal>LogLevel</literal> on the
427 <literal>org.freedesktop.systemd1.Manager</literal>
428 interface. The property contains a single string:</para>
429
430 <programlisting># busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s debug
431 # busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel
432 s "debug"</programlisting>
433
434 </example>
435
436 <example>
437 <title>Terse and Verbose Output</title>
438
439 <para>The following two commands read a property that contains
440 an array of strings, and first show it in terse format, followed
441 by verbose format:</para>
442
443 <programlisting>$ busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment
444 as 2 "LANG=en_US.UTF-8" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
445 $ busctl get-property --verbose org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment
446 ARRAY "s" {
447 STRING "LANG=en_US.UTF-8";
448 STRING "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin";
449 };</programlisting>
450 </example>
451
452 <example>
453 <title>Invoking a Method</title>
454
455 <para>The following command invokes the
456 <literal>StartUnit</literal> method on the
457 <literal>org.freedesktop.systemd1.Manager</literal>
458 interface of the
459 <literal>/org/freedesktop/systemd1</literal> object
460 of the <literal>org.freedesktop.systemd1</literal>
461 service, and passes it two strings
462 <literal>cups.service</literal> and
463 <literal>replace</literal>. As a result of the method
464 call, a single object path parameter is received and
465 shown:</para>
466
467 <programlisting># busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager StartUnit ss "cups.service" "replace"
468 o "/org/freedesktop/systemd1/job/42684"</programlisting>
469 </example>
470 </refsect1>
471
472 <refsect1>
473 <title>See Also</title>
474
475 <para>
476 <citerefentry project='dbus'><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
477 <ulink url="https://www.freedesktop.org/wiki/Software/dbus">D-Bus</ulink>,
478 <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
479 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
480 <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
481 <citerefentry project='die-net'><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry>
482 </para>
483 </refsect1>
484 </refentry>