busctl - самоанализ и мониторинг шины D-Bus
busctl [OPTIONS...] [COMMAND] [NAME...]
busctl может использоваться для самоанализа и мониторинга шины D-Bus.
Понимаются следующие команды:
Показать всех одноранговых узлов в шине по именам их служб. По умолчанию отображаются как уникальные, так и общеизвестные имена, но это можно изменить с помощью переключателей --unique и --acquired. Это операция по умолчанию, если команда не указана.
Показать информацию о процессе и учетные данные службы шины (если она указана ее уникальным или общеизвестным именем), процесса (если она указана его числовым PID) или владельца шины (если параметр не указан) .
Дамп обмена сообщениями. Если указан параметр SERVICE, показывать сообщения от или к этому одноранговому узлу, идентифицируемые по его общеизвестному или уникальному имени. В противном случае показать все сообщения на шине. Используйте Ctrl+C, чтобы завершить создание дампа.
Аналогичен monitor, но записывает выходные данные в формате pcapng (подробности см. в разделе Формат файла захвата PCAP Next Generation (pcapng)[1]). Обязательно перенаправьте стандартный вывод в файл или канал. Такие инструменты, как wireshark(1), можно использовать для анализа и просмотра полученных файлов.
Показывает дерево объектов одного или нескольких сервисов. Если указано SERVICE, показать дерево объектов только указанных служб. В противном случае показать все деревья объектов всех сервисов на шине, получивших хотя бы одно известное имя.
Показать интерфейсы, методы, свойства и сигналы указанного объекта (идентифицированного его путем) в указанной службе. Если передается аргумент интерфейса, выходные данные ограничиваются членами указанного интерфейса.
Вызвать метод и показать ответ. Принимает имя службы, путь к объекту, имя интерфейса и имя метода. Если параметры должны быть переданы вызову метода, требуется строка подписи, за которой следуют аргументы, индивидуально отформатированные как строки. Подробнее об используемом форматировании см. ниже. Чтобы запретить вывод возвращаемых данных, используйте параметр --quiet.
Издать сигнал. Принимает путь к объекту, имя интерфейса и имя метода. Если должны быть переданы параметры, требуется строка подписи, за которой следуют аргументы, индивидуально отформатированные как строки. Подробнее об используемом форматировании см. ниже. Чтобы указать назначение сигнала, используйте параметр --destination=.
Получить текущее значение одного или нескольких свойств объекта. Принимает имя службы, путь к объекту, имя интерфейса и имя свойства. Несколько свойств могут быть указаны одновременно, и в этом случае их значения будут отображаться одно за другим, разделенные символами новой строки. Вывод по умолчанию в кратком формате. Используйте --verbose для более сложного формата вывода.
Установите текущее значение свойства объекта. Принимает имя службы, путь к объекту, имя интерфейса, имя свойства, подпись свойства, за которыми следует список параметров, отформатированных как строки.
Показать справку по синтаксису команд.
Подразумеваются следующие варианты:
Подключиться к шине, указанной параметром АДРЕС, вместо использования подходящих значений по умолчанию для системной или пользовательской шины (см. параметры --system и --user). ).
При отображении списка пиров покажите столбец, содержащий имена контейнеров, которым они принадлежат. См. systemd-machined.service(8).
При отображении списка пиров показывать только «уникальные» имена (в форме «:номер.номер»).
В отличие от --unique — будут показаны только «известные» имена.
При отображении списка пиров показывать только те пиры, которые фактически еще не активированы, но могут быть запущены автоматически при доступе.
При отображении сообщений, которыми обмениваются, показывать только подмножество, соответствующее MATCH. См. sd_bus_add_match(3).
При использовании с командой capture указывает максимальный размер сообщения шины для захвата ("snaplen"). По умолчанию 4096 байт.
При использовании с командой tree показывает плоский список путей к объектам вместо дерева.
При использовании с командой call подавляет отображение полезных данных ответного сообщения. Обратите внимание, что даже если указан этот параметр, возвращенные ошибки все равно будут напечатаны, а инструмент укажет на успех или неудачу с помощью кода завершения процесса.
При использовании с командой call или get-property выходные данные отображаются в более подробном формате.
При использовании с вызовом introspect выводит XML-описание, полученное от вызова D-Bus org.freedesktop.DBus.Introspectable.Introspect, вместо обычного вывода.
При использовании с командой call или get-property выходные данные отображаются в формате JSON. Ожидается один из «коротких» (для максимально короткого вывода без лишних пробелов или разрывов строк) или «симпатичных» (для красивой версии того же самого, с отступами и разрывами строк). Обратите внимание, что преобразование маршалинга D-Bus в JSON выполняется без потерь, что означает, что информация о типе встраивается в дерево объектов JSON.
Эквивалент --json=pretty при интерактивном вызове из терминала. В противном случае эквивалентно --json=short, в частности, когда выходные данные передаются какой-либо другой программе.
При использовании с командой call указывает, должен ли busctl ожидать завершения вызова метода, выводить возвращенные данные ответа метода и возвращать успех или неудачу через код выхода процесса. . Если для этого параметра установлено значение «нет», вызов метода будет выполнен, но ответа не ожидается, инструмент немедленно завершает работу, и, таким образом, ответ не может быть показан, и через код выхода не возвращается ни успех, ни неудача. Чтобы подавить только вывод полезной нагрузки ответного сообщения, используйте --quiet выше. По умолчанию "да".
При использовании с командой call или emit указывает, должен ли вызов метода неявно активировать вызываемую службу, если она еще не запущена, но настроена на автоматический запуск. По умолчанию "да".
При использовании с командой call указывает, могут ли службы применять интерактивную авторизацию при выполнении операции, если для этого настроена политика безопасности. По умолчанию "да".
При использовании с командой call указывает максимальное время ожидания завершения вызова метода. Если единица измерения времени не указана, предполагаются секунды. Обычные другие единицы также понимаются (мс, нас, с, мин, ч, д, нед, месяц, г). Обратите внимание, что этот тайм-аут не применяется, если используется --expect-reply=no, так как в этом случае инструмент не ожидает никаких ответных сообщений. Если не указано или установлено значение 0, предполагается значение по умолчанию «25 с».
Управляет тем, должны ли учетные данные, сообщаемые списком или статусом, дополняться данными из /proc/. Когда это включено, отображаемые данные могут быть несогласованными, поскольку данные, считанные из /proc/, могут быть более свежими, чем остальная информация об учетных данных. По умолчанию "да".
Определяет, следует ли ожидать появления указанного сокета шины AF_UNIX в файловой системе перед подключением к нему. По умолчанию отключено. Если этот параметр включен, инструмент будет следить за файловой системой до тех пор, пока не будет создан сокет, а затем подключится к нему.
Принимает имя службы. При использовании с командой emit сигнал передается в указанную службу.
Поговорите с сервис-менеджером вызывающего пользователя, а не с сервис-менеджером системы.
Поговорите с сервис-менеджером системы. Это подразумевается по умолчанию.
Выполните операцию удаленно. Укажите имя хоста или имя пользователя и имя хоста, разделенные «@», для подключения. Имя хоста может дополнительно сопровождаться суффиксом порта, который прослушивает ssh, разделенным «:», а затем именем контейнера, разделенным «/», которое напрямую подключается к определенному контейнеру на указанном хосте. Это будет использовать SSH для связи с экземпляром удаленного диспетчера машин. Имена контейнеров можно перечислить с помощью machinectl -H HOST. Поместите IPv6-адреса в скобки.
Выполнить операцию в локальном контейнере. Укажите имя контейнера, к которому необходимо подключиться, при необходимости с префиксом имени пользователя для подключения и разделительным символом «@». Если вместо имени контейнера используется специальная строка ".host", выполняется подключение к локальной системе (что полезно для подключения к пользовательской шине конкретного пользователя: "--user --machine=lennart@.host "). Если синтаксис «@» не используется, подключение выполняется от имени пользователя root. Если используется синтаксис «@», либо левая, либо правая часть может быть опущена (но не обе), и в этом случае подразумевается имя локального пользователя и «.host».
Не делайте вывод в команде list многоточием.
Не направляйте вывод на пейджер.
Не печатать легенду, т.е. заголовки столбцов и нижний колонтитул с подсказками.
Напечатайте краткий текст справки и выйдите.
Напечатайте короткую строку версии и выйдите.
Команды 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)
Формат файла захвата PCAP следующего поколения (pcapng): https://github.com/pcapng/pcapng/
Глава о системе типов спецификации D-Bus: https://dbus.freedesktop.org/doc/dbus-specification.html#type-system
D-Bus: https://www.freedesktop.org/wiki/Software/dbus