busctl - справочное руководство, опции, примеры команд


ИМЯ

busctl - самоанализ и мониторинг шины D-Bus

СИНТАКСИС

busctl [OPTIONS...] [COMMAND] [NAME...]

ОПИСАНИЕ

busctl может использоваться для самоанализа и мониторинга шины D-Bus.

КОМАНДЫ

Понимаются следующие команды:

list

Показать всех одноранговых узлов в шине по именам их служб. По умолчанию отображаются как уникальные, так и общеизвестные имена, но это можно изменить с помощью переключателей --unique и --acquired. Это операция по умолчанию, если команда не указана.

status [SERVICE]

Показать информацию о процессе и учетные данные службы шины (если она указана ее уникальным или общеизвестным именем), процесса (если она указана его числовым PID) или владельца шины (если параметр не указан) .

monitor [SERVICE...]

Дамп обмена сообщениями. Если указан параметр SERVICE, показывать сообщения от или к этому одноранговому узлу, идентифицируемые по его общеизвестному или уникальному имени. В противном случае показать все сообщения на шине. Используйте Ctrl+C, чтобы завершить создание дампа.

capture [SERVICE...]

Аналогичен monitor, но записывает выходные данные в формате pcapng (подробности см. в разделе Формат файла захвата PCAP Next Generation (pcapng)[1]). Обязательно перенаправьте стандартный вывод в файл или канал. Такие инструменты, как wireshark(1), можно использовать для анализа и просмотра полученных файлов.

tree [SERVICE...]

Показывает дерево объектов одного или нескольких сервисов. Если указано SERVICE, показать дерево объектов только указанных служб. В противном случае показать все деревья объектов всех сервисов на шине, получивших хотя бы одно известное имя.

introspect SERVICE OBJECT [INTERFACE]

Показать интерфейсы, методы, свойства и сигналы указанного объекта (идентифицированного его путем) в указанной службе. Если передается аргумент интерфейса, выходные данные ограничиваются членами указанного интерфейса.

call SERVICE OBJECT INTERFACE METHOD [SIGNATURE [ARGUMENT...]]

Вызвать метод и показать ответ. Принимает имя службы, путь к объекту, имя интерфейса и имя метода. Если параметры должны быть переданы вызову метода, требуется строка подписи, за которой следуют аргументы, индивидуально отформатированные как строки. Подробнее об используемом форматировании см. ниже. Чтобы запретить вывод возвращаемых данных, используйте параметр --quiet.

emit OBJECT INTERFACE SIGNAL [SIGNATURE [ARGUMENT...]]

Издать сигнал. Принимает путь к объекту, имя интерфейса и имя метода. Если должны быть переданы параметры, требуется строка подписи, за которой следуют аргументы, индивидуально отформатированные как строки. Подробнее об используемом форматировании см. ниже. Чтобы указать назначение сигнала, используйте параметр --destination=.

get-property SERVICE OBJECT INTERFACE PROPERTY...

Получить текущее значение одного или нескольких свойств объекта. Принимает имя службы, путь к объекту, имя интерфейса и имя свойства. Несколько свойств могут быть указаны одновременно, и в этом случае их значения будут отображаться одно за другим, разделенные символами новой строки. Вывод по умолчанию в кратком формате. Используйте --verbose для более сложного формата вывода.

set-property SERVICE OBJECT INTERFACE PROPERTY SIGNATURE ARGUMENT...

Установите текущее значение свойства объекта. Принимает имя службы, путь к объекту, имя интерфейса, имя свойства, подпись свойства, за которыми следует список параметров, отформатированных как строки.

help

Показать справку по синтаксису команд.

ПАРАМЕТРЫ

Подразумеваются следующие варианты:

--address=ADDRESS

Подключиться к шине, указанной параметром АДРЕС, вместо использования подходящих значений по умолчанию для системной или пользовательской шины (см. параметры --system и --user). ).

--show-machine

При отображении списка пиров покажите столбец, содержащий имена контейнеров, которым они принадлежат. См. systemd-machined.service(8).

--unique

При отображении списка пиров показывать только «уникальные» имена (в форме «:номер.номер»).

--acquired

В отличие от --unique — будут показаны только «известные» имена.

--activatable

При отображении списка пиров показывать только те пиры, которые фактически еще не активированы, но могут быть запущены автоматически при доступе.

--match=MATCH

При отображении сообщений, которыми обмениваются, показывать только подмножество, соответствующее MATCH. См. sd_bus_add_match(3).

--size=

При использовании с командой capture указывает максимальный размер сообщения шины для захвата ("snaplen"). По умолчанию 4096 байт.

--list

При использовании с командой tree показывает плоский список путей к объектам вместо дерева.

-q, --quiet

При использовании с командой call подавляет отображение полезных данных ответного сообщения. Обратите внимание, что даже если указан этот параметр, возвращенные ошибки все равно будут напечатаны, а инструмент укажет на успех или неудачу с помощью кода завершения процесса.

--verbose

При использовании с командой call или get-property выходные данные отображаются в более подробном формате.

--xml-interface

При использовании с вызовом introspect выводит XML-описание, полученное от вызова D-Bus org.freedesktop.DBus.Introspectable.Introspect, вместо обычного вывода.

--json=MODE

При использовании с командой call или get-property выходные данные отображаются в формате JSON. Ожидается один из «коротких» (для максимально короткого вывода без лишних пробелов или разрывов строк) или «симпатичных» (для красивой версии того же самого, с отступами и разрывами строк). Обратите внимание, что преобразование маршалинга D-Bus в JSON выполняется без потерь, что означает, что информация о типе встраивается в дерево объектов JSON.

-j

Эквивалент --json=pretty при интерактивном вызове из терминала. В противном случае эквивалентно --json=short, в частности, когда выходные данные передаются какой-либо другой программе.

--expect-reply=BOOL

При использовании с командой call указывает, должен ли busctl ожидать завершения вызова метода, выводить возвращенные данные ответа метода и возвращать успех или неудачу через код выхода процесса. . Если для этого параметра установлено значение «нет», вызов метода будет выполнен, но ответа не ожидается, инструмент немедленно завершает работу, и, таким образом, ответ не может быть показан, и через код выхода не возвращается ни успех, ни неудача. Чтобы подавить только вывод полезной нагрузки ответного сообщения, используйте --quiet выше. По умолчанию "да".

--auto-start=BOOL

При использовании с командой call или emit указывает, должен ли вызов метода неявно активировать вызываемую службу, если она еще не запущена, но настроена на автоматический запуск. По умолчанию "да".

--allow-interactive-authorization=BOOL

При использовании с командой call указывает, могут ли службы применять интерактивную авторизацию при выполнении операции, если для этого настроена политика безопасности. По умолчанию "да".

--timeout=SECS

При использовании с командой call указывает максимальное время ожидания завершения вызова метода. Если единица измерения времени не указана, предполагаются секунды. Обычные другие единицы также понимаются (мс, нас, с, мин, ч, д, нед, месяц, г). Обратите внимание, что этот тайм-аут не применяется, если используется --expect-reply=no, так как в этом случае инструмент не ожидает никаких ответных сообщений. Если не указано или установлено значение 0, предполагается значение по умолчанию «25 с».

--augment-creds=BOOL

Управляет тем, должны ли учетные данные, сообщаемые списком или статусом, дополняться данными из /proc/. Когда это включено, отображаемые данные могут быть несогласованными, поскольку данные, считанные из /proc/, могут быть более свежими, чем остальная информация об учетных данных. По умолчанию "да".

--watch-bind=BOOL

Определяет, следует ли ожидать появления указанного сокета шины AF_UNIX в файловой системе перед подключением к нему. По умолчанию отключено. Если этот параметр включен, инструмент будет следить за файловой системой до тех пор, пока не будет создан сокет, а затем подключится к нему.

--destination=SERVICE

Принимает имя службы. При использовании с командой emit сигнал передается в указанную службу.

--user

Поговорите с сервис-менеджером вызывающего пользователя, а не с сервис-менеджером системы.

--system

Поговорите с сервис-менеджером системы. Это подразумевается по умолчанию.

-H, --host=

Выполните операцию удаленно. Укажите имя хоста или имя пользователя и имя хоста, разделенные «@», для подключения. Имя хоста может дополнительно сопровождаться суффиксом порта, который прослушивает ssh, разделенным «:», а затем именем контейнера, разделенным «/», которое напрямую подключается к определенному контейнеру на указанном хосте. Это будет использовать SSH для связи с экземпляром удаленного диспетчера машин. Имена контейнеров можно перечислить с помощью machinectl -H HOST. Поместите IPv6-адреса в скобки.

-M, --machine=

Выполнить операцию в локальном контейнере. Укажите имя контейнера, к которому необходимо подключиться, при необходимости с префиксом имени пользователя для подключения и разделительным символом «@». Если вместо имени контейнера используется специальная строка ".host", выполняется подключение к локальной системе (что полезно для подключения к пользовательской шине конкретного пользователя: "--user --machine=lennart@.host "). Если синтаксис «@» не используется, подключение выполняется от имени пользователя root. Если используется синтаксис «@», либо левая, либо правая часть может быть опущена (но не обе), и в этом случае подразумевается имя локального пользователя и «.host».

-l, --full

Не делайте вывод в команде list многоточием.

--no-pager

Не направляйте вывод на пейджер.

--no-legend

Не печатать легенду, т.е. заголовки столбцов и нижний колонтитул с подсказками.

-h, --help

Напечатайте краткий текст справки и выйдите.

--version

Напечатайте короткую строку версии и выйдите.

ФОРМАТИРОВАНИЕ ПАРАМЕТРОВ

Команды call и set-property принимают строку подписи, за которой следует список параметров, отформатированных как строка (подробности о строках подписи D-Bus см. в разделе Тип системную главу спецификации D-Bus[2]). Для простых типов каждый параметр, следующий за сигнатурой, должен быть просто значением параметра, отформатированным как строка. Положительные логические значения могут быть отформатированы как «истина», «да», «включено» или «1»; отрицательные логические значения могут быть указаны как «false», «no», «off» или «0». Для массивов должен быть указан числовой аргумент для количества записей, за которыми следуют записи. Для вариантов должна быть указана подпись содержания, за которой следует содержание. Для словарей и структур их содержимое должно быть указано напрямую.

Например,

s jawoll

это форматирование одной строки "jawoll".

as 3 hello world foobar

представляет собой форматирование массива строк с тремя элементами: «hello», «world» и «foobar».

a{sv} 3 One s Eins Two u 2 Yes b true

это форматирование словарного массива, который отображает строки в варианты, состоящие из трех записей. Строке «One» присваивается строка «Eins». Строке «Два» присваивается 32-битное целое число без знака 2. Строке «Да» присваивается положительное логическое значение.

Обратите внимание, что команды call, get-property, introspect также будут генерировать выходные данные в этом формате для возвращаемых данных. Поскольку этот формат иногда слишком краток, чтобы его было легко понять, команды call и get-property могут генерировать более подробный многострочный вывод при передаче - -подробный параметр.

ПРИМЕРЫ

Пример 1. Запись и чтение свойства

Следующие две команды сначала записывают свойство, а затем считывают его обратно. Это свойство находится в объекте «/org/freedesktop/systemd1» службы «org.freedesktop.systemd1». Имя свойства — «LogLevel» в интерфейсе «org.freedesktop.systemd1.Manager». Свойство содержит одну строку:

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"

Пример 2. Краткий и подробный вывод

Следующие две команды считывают свойство, содержащее массив строк, и сначала отображают его в кратком, а затем в подробном формате:

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";
};

Пример 3. Вызов метода

Следующая команда вызывает метод «StartUnit» в интерфейсе «org.freedesktop.systemd1.Manager» объекта «/org/freedesktop/systemd1» службы «org.freedesktop.systemd1» и передает ему две строки «cups». .сервис" и "заменить". В результате вызова метода принимается и показывается единственный параметр пути к объекту:

busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager StartUnit ss "cups.service" "replace" o "/org/freedesktop/systemd1/job/42684"

СМОТРИТЕ ТАКЖЕ

dbus-daemon(1), D-Bus[3], sd-bus(3), systemd(1), machinectl(1), wireshark(1)

ПРИМЕЧАНИЯ

  1. Формат файла захвата PCAP следующего поколения (pcapng): https://github.com/pcapng/pcapng/

  2. Глава о системе типов спецификации D-Bus: https://dbus.freedesktop.org/doc/dbus-specification.html#type-system

  3. D-Bus: https://www.freedesktop.org/wiki/Software/dbus