<?xml version='1.0'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="busctl"
          xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>busctl</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>busctl</refentrytitle>
    <manvolnum>1</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>busctl</refname>
    <refpurpose>Introspect the bus</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>busctl</command>
      <arg choice="opt" rep="repeat">OPTIONS</arg>
      <arg choice="opt">COMMAND</arg>
      <arg choice="opt" rep="repeat"><replaceable>NAME</replaceable></arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>busctl</command> may be used to
    introspect and monitor the D-Bus bus.</para>
  </refsect1>

  <refsect1>
    <title>Commands</title>

    <para>The following commands are understood:</para>

    <variablelist>
      <varlistentry>
        <term><command>list</command></term>

        <listitem><para>Show all peers on the bus, by their service
        names. By default, shows both unique and well-known names, but
        this may be changed with the <option>--unique</option> and
        <option>--acquired</option> switches. This is the default
        operation if no command is specified.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><command>status</command> <arg choice="opt"><replaceable>SERVICE</replaceable></arg></term>

        <listitem><para>Show process information and credentials of a
        bus service (if one is specified by its unique or well-known
        name), a process (if one is specified by its numeric PID), or
        the owner of the bus (if no parameter is
        specified).</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><command>monitor</command> <arg choice="opt" rep="repeat"><replaceable>SERVICE</replaceable></arg></term>

        <listitem><para>Dump messages being exchanged. If
        <replaceable>SERVICE</replaceable> is specified, show messages
        to or from this peer, identified by its well-known or unique
        name. Otherwise, show all messages on the bus. Use
        <keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>
        to terminate the dump.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><command>capture</command> <arg choice="opt" rep="repeat"><replaceable>SERVICE</replaceable></arg></term>

        <listitem><para>Similar to <command>monitor</command> but
        writes the output in pcap format (for details, see the <ulink
        url="https://wiki.wireshark.org/Development/LibpcapFileFormat">Libpcap
        File Format</ulink> description). Make sure to redirect
        standard output to a file. Tools like
        <citerefentry project='die-net'><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry>
        may be used to dissect and view the resulting
        files.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><command>tree</command> <arg choice="opt" rep="repeat"><replaceable>SERVICE</replaceable></arg></term>

        <listitem><para>Shows an object tree of one or more
        services. If <replaceable>SERVICE</replaceable> is specified,
        show object tree of the specified services only. Otherwise,
        show all object trees of all services on the bus that acquired
        at least one well-known name.</para></listitem>
      </varlistentry>

      <varlistentry>
        <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>

        <listitem><para>Show interfaces, methods, properties and
        signals of the specified object (identified by its path) on
        the specified service. If the interface argument is passed, the
        output is limited to members of the specified
        interface.</para></listitem>
      </varlistentry>

      <varlistentry>
        <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>

        <listitem><para>Invoke a method and show the response. Takes a
        service name, object path, interface name and method name. If
        parameters shall be passed to the method call, a signature
        string is required, followed by the arguments, individually
        formatted as strings. For details on the formatting used, see
        below. To suppress output of the returned data, use the
        <option>--quiet</option> option.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><command>emit</command> <arg choice="plain"><replaceable>OBJECT</replaceable></arg> <arg choice="plain"><replaceable>INTERFACE</replaceable></arg> <arg choice="plain"><replaceable>SIGNAL</replaceable></arg> <arg choice="opt"><replaceable>SIGNATURE</replaceable> <arg choice="opt" rep="repeat"><replaceable>ARGUMENT</replaceable></arg></arg></term>

        <listitem><para>Emit a signal. Takes an object path, interface name and method name. If parameters
        shall be passed, a signature string is required, followed by the arguments, individually formatted as
        strings. For details on the formatting used, see below. To specify the destination of the signal,
        use the <option>--destination=</option> option.</para></listitem>
      </varlistentry>

      <varlistentry>
        <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>

        <listitem><para>Retrieve the current value of one or more
        object properties. Takes a service name, object path,
        interface name and property name. Multiple properties may be
        specified at once, in which case their values will be shown one
        after the other, separated by newlines. The output is, by
        default, in terse format. Use <option>--verbose</option> for a
        more elaborate output format.</para></listitem>
      </varlistentry>

      <varlistentry>
        <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>

        <listitem><para>Set the current value of an object
        property. Takes a service name, object path, interface name,
        property name, property signature, followed by a list of
        parameters formatted as strings.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><command>help</command></term>

        <listitem><para>Show command syntax help.</para></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Options</title>

    <para>The following options are understood:</para>

    <variablelist>
      <varlistentry>
          <term><option>--address=<replaceable>ADDRESS</replaceable></option></term>

          <listitem><para>Connect to the bus specified by
          <replaceable>ADDRESS</replaceable> instead of using suitable
          defaults for either the system or user bus (see
          <option>--system</option> and <option>--user</option>
          options).</para></listitem>
      </varlistentry>

      <varlistentry>
          <term><option>--show-machine</option></term>

          <listitem><para>When showing the list of peers, show a
          column containing the names of containers they belong to.
          See
          <citerefentry><refentrytitle>systemd-machined.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
          </para></listitem>
      </varlistentry>

      <varlistentry>
          <term><option>--unique</option></term>

          <listitem><para>When showing the list of peers, show only
          "unique" names (of the form
          <literal>:<replaceable>number</replaceable>.<replaceable>number</replaceable></literal>).
          </para></listitem>
      </varlistentry>

      <varlistentry>
          <term><option>--acquired</option></term>

          <listitem><para>The opposite of <option>--unique</option> —
          only "well-known" names will be shown.</para></listitem>
      </varlistentry>

      <varlistentry>
          <term><option>--activatable</option></term>

          <listitem><para>When showing the list of peers, show only
          peers which have actually not been activated yet, but may be
          started automatically if accessed.</para>
          </listitem>
      </varlistentry>

      <varlistentry>
          <term><option>--match=<replaceable>MATCH</replaceable></option></term>

          <listitem><para>When showing messages being exchanged, show only the
          subset matching <replaceable>MATCH</replaceable>.
          See
          <citerefentry><refentrytitle>sd_bus_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
          </para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--size=</option></term>

        <listitem>
          <para>When used with the <command>capture</command> command,
          specifies the maximum bus message size to capture
          ("snaplen"). Defaults to 4096 bytes.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--list</option></term>

        <listitem>
          <para>When used with the <command>tree</command> command, shows a
          flat list of object paths instead of a tree.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-q</option></term>
        <term><option>--quiet</option></term>

        <listitem>
          <para>When used with the <command>call</command> command,
          suppresses display of the response message payload. Note that even
          if this option is specified, errors returned will still be
          printed and the tool will indicate success or failure with
          the process exit code.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--verbose</option></term>

        <listitem>
          <para>When used with the <command>call</command> or
          <command>get-property</command> command, shows output in a
          more verbose format.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--xml-interface</option></term>

        <listitem>
          <para>When used with the <command>introspect</command> call, dump the XML description received from
          the D-Bus <constant>org.freedesktop.DBus.Introspectable.Introspect</constant> call instead of the
          normal output.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--json=</option><replaceable>MODE</replaceable></term>

        <listitem>
          <para>When used with the <command>call</command> or <command>get-property</command> command, shows output
          formatted as JSON. Expects one of <literal>short</literal> (for the shortest possible output without any
          redundant whitespace or line breaks) or <literal>pretty</literal> (for a pretty version of the same, with
          indentation and line breaks). Note that transformation from D-Bus marshalling to JSON is done in a loss-less
          way, which means type information is embedded into the JSON object tree.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-j</option></term>

        <listitem>
          <para>Equivalent to <option>--json=pretty</option> when invoked interactively from a terminal. Otherwise
          equivalent to <option>--json=short</option>, in particular when the output is piped to some other
          program.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--expect-reply=</option><replaceable>BOOL</replaceable></term>

        <listitem>
          <para>When used with the <command>call</command> command,
          specifies whether <command>busctl</command> shall wait for
          completion of the method call, output the returned method
          response data, and return success or failure via the process
          exit code. If this is set to <literal>no</literal>, the
          method call will be issued but no response is expected, the
          tool terminates immediately, and thus no response can be
          shown, and no success or failure is returned via the exit
          code. To only suppress output of the reply message payload,
          use <option>--quiet</option> above. Defaults to
          <literal>yes</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--auto-start=</option><replaceable>BOOL</replaceable></term>

        <listitem>
          <para>When used with the <command>call</command> or <command>emit</command> command, specifies
          whether the method call should implicitly activate the
          called service, should it not be running yet but is
          configured to be auto-started. Defaults to
          <literal>yes</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--allow-interactive-authorization=</option><replaceable>BOOL</replaceable></term>

        <listitem>
          <para>When used with the <command>call</command> command,
          specifies whether the services may enforce interactive
          authorization while executing the operation, if the security
          policy is configured for this. Defaults to
          <literal>yes</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--timeout=</option><replaceable>SECS</replaceable></term>

        <listitem>
          <para>When used with the <command>call</command> command,
          specifies the maximum time to wait for method call
          completion. If no time unit is specified, assumes
          seconds. The usual other units are understood, too (ms, us,
          s, min, h, d, w, month, y). Note that this timeout does not
          apply if <option>--expect-reply=no</option> is used, as the
          tool does not wait for any reply message then. When not
          specified or when set to 0, the default of
          <literal>25s</literal> is assumed.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--augment-creds=</option><replaceable>BOOL</replaceable></term>

        <listitem>
          <para>Controls whether credential data reported by
          <command>list</command> or <command>status</command> shall
          be augmented with data from
          <filename>/proc/</filename>. When this is turned on, the data
          shown is possibly inconsistent, as the data read from
          <filename>/proc/</filename> might be more recent than the rest of
          the credential information. Defaults to <literal>yes</literal>.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--watch-bind=</option><replaceable>BOOL</replaceable></term>

        <listitem>
          <para>Controls whether to wait for the specified <constant>AF_UNIX</constant> bus socket to appear in the
          file system before connecting to it. Defaults to off. When enabled, the tool will watch the file system until
          the socket is created and then connect to it.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--destination=</option><replaceable>SERVICE</replaceable></term>

        <listitem>
          <para>Takes a service name. When used with the <command>emit</command> command, a signal is
          emitted to the specified service.</para>
        </listitem>
      </varlistentry>

      <xi:include href="user-system-options.xml" xpointer="user" />
      <xi:include href="user-system-options.xml" xpointer="system" />
      <xi:include href="user-system-options.xml" xpointer="host" />
      <xi:include href="user-system-options.xml" xpointer="machine" />

      <varlistentry>
        <term><option>-l</option></term>
        <term><option>--full</option></term>

        <listitem>
          <para>Do not ellipsize the output in <command>list</command> command.</para>
        </listitem>
      </varlistentry>

      <xi:include href="standard-options.xml" xpointer="no-pager" />
      <xi:include href="standard-options.xml" xpointer="no-legend" />
      <xi:include href="standard-options.xml" xpointer="help" />
      <xi:include href="standard-options.xml" xpointer="version" />
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Parameter Formatting</title>

    <para>The <command>call</command> and
    <command>set-property</command> commands take a signature string
    followed by a list of parameters formatted as string (for details
    on D-Bus signature strings, see the <ulink
    url="http://dbus.freedesktop.org/doc/dbus-specification.html#type-system">Type
    system chapter of the D-Bus specification</ulink>). For simple
    types, each parameter following the signature should simply be the
    parameter's value formatted as string. Positive boolean values may
    be formatted as <literal>true</literal>, <literal>yes</literal>,
    <literal>on</literal>, or <literal>1</literal>; negative boolean
    values may be specified as <literal>false</literal>,
    <literal>no</literal>, <literal>off</literal>, or
    <literal>0</literal>. For arrays, a numeric argument for the
    number of entries followed by the entries shall be specified. For
    variants, the signature of the contents shall be specified,
    followed by the contents. For dictionaries and structs, the
    contents of them shall be directly specified.</para>

    <para>For example,
    <programlisting>s jawoll</programlisting> is the formatting
    of a single string <literal>jawoll</literal>.</para>

    <para>
    <programlisting>as 3 hello world foobar</programlisting>
    is the formatting of a string array with three entries,
    <literal>hello</literal>, <literal>world</literal> and
    <literal>foobar</literal>.</para>

    <para>
    <programlisting>a{sv} 3 One s Eins Two u 2 Yes b true</programlisting>
    is the formatting of a dictionary
    array that maps strings to variants, consisting of three
    entries. The string <literal>One</literal> is assigned the
    string <literal>Eins</literal>. The string
    <literal>Two</literal> is assigned the 32-bit unsigned
    integer 2. The string <literal>Yes</literal> is assigned a
    positive boolean.</para>

    <para>Note that the <command>call</command>,
    <command>get-property</command>, <command>introspect</command>
    commands will also generate output in this format for the returned
    data. Since this format is sometimes too terse to be easily
    understood, the <command>call</command> and
    <command>get-property</command> commands may generate a more
    verbose, multi-line output when passed the
    <option>--verbose</option> option.</para>
  </refsect1>

  <refsect1>
    <title>Examples</title>

    <example>
      <title>Write and Read a Property</title>

      <para>The following two commands first write a property and then
      read it back. The property is found on the
      <literal>/org/freedesktop/systemd1</literal> object of the
      <literal>org.freedesktop.systemd1</literal> service. The name of
      the property is <literal>LogLevel</literal> on the
      <literal>org.freedesktop.systemd1.Manager</literal>
      interface. The property contains a single string:</para>

      <programlisting># busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s debug
# busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel
s "debug"</programlisting>

    </example>

    <example>
      <title>Terse and Verbose Output</title>

      <para>The following two commands read a property that contains
      an array of strings, and first show it in terse format, followed
      by verbose format:</para>

      <programlisting>$ busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment
as 2 "LANG=en_US.UTF-8" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
$ busctl get-property --verbose org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment
ARRAY "s" {
        STRING "LANG=en_US.UTF-8";
        STRING "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin";
};</programlisting>
    </example>

    <example>
      <title>Invoking a Method</title>

      <para>The following command invokes the
      <literal>StartUnit</literal> method on the
      <literal>org.freedesktop.systemd1.Manager</literal>
      interface of the
      <literal>/org/freedesktop/systemd1</literal> object
      of the <literal>org.freedesktop.systemd1</literal>
      service, and passes it two strings
      <literal>cups.service</literal> and
      <literal>replace</literal>. As a result of the method
      call, a single object path parameter is received and
      shown:</para>

      <programlisting># busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager StartUnit ss "cups.service" "replace"
o "/org/freedesktop/systemd1/job/42684"</programlisting>
    </example>
  </refsect1>

  <refsect1>
    <title>See Also</title>

    <para>
      <citerefentry project='dbus'><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <ulink url="https://www.freedesktop.org/wiki/Software/dbus">D-Bus</ulink>,
      <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry project='die-net'><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry>
    </para>
  </refsect1>
</refentry>
