dbus --- dbus-send、dbus-monitor工具、标准接口
dbus-send
功能
- 调用指定程序的方法
- 向指定程序发送信号
dbus-send
的基本语法
dbus-send --system|--session --dest=destination --type=method_call --print-reply /path/to/object interface.method [arg1 arg2 ...]
--system
或--session
:指定使用系统总线还是会话总线。系统总线用于系统级服务,而会话总线用于用户会话中的服务。--dest=destination
:指定目标服务的名称,也称well-known Name--type=method_call
:指定消息类型为方法调用;signal表示发送信号--print-reply
:如果服务响应了消息,打印响应消息;也可以写--print-reply=literal,,literal会把所有的标点和转义符号去掉/path/to/object
:目标对象的路径。interface.method
:要调用的接口.方法。[arg1 arg2 ...]
:传递给方法的参数(可选)。
示例
使用dbus-send
控制屏幕保护程序
假设你想使用dbus-send
来锁定屏幕(这通常通过调用屏幕保护程序的服务来完成)。你可以使用以下命令:
dbus-send --session --print-reply --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
返回
method return time=1720419947.196079 sender=:1.85 -> destination=:1.112 serial=28 reply_serial=2
标准接口
标准接口可以在DBus-Spec中找到,可以使用dbus提供的标准接口进行迭代查询,查询到每个的服务名--->obj路径--->每个方法的输入输出参数。
查询系统总线所有服务名称
dbus-send --system --print-reply --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ListNames
返回
method return time=1689984075.048033 sender=org.freedesktop.DBus -> destination=:1.3 serial=3 reply_serial=2
array [
string "org.freedesktop.DBus"
string ":1.3"
string ":1.0"
string "org.bluez"
]
查询服务 org.bluez 的所有对象的所有接口及其属性值(方法和信号没列出)
dbus-send --system --print-reply --type=method_call --dest=org.bluez / org.freedesktop.DBus.ObjectManager.GetManagedObjects
查询对象 org/bluez 的所有接口的方法、属性和信号的信息
dbus-send --system --print-reply --type=method_call --dest=org.bluez /org/bluez org.freedesktop.DBus.Introspectable.Introspect
dbus-monitor
基本语法
dbus-monitor
[--system | --session | --address ADDRESS]
[--profile | --monitor | --pcap | --binary] // 设置输出格式
[watch expressions]
监视接口 org.bluez.Adapter1 的方法调用
root@rk3308h-buildroot:/# dbus-monitor --profile --system "type='method_call',interface='org.bluez.Adapter1'"
#type timestamp serial sender destination path interface member # in_reply_to sig 1689986806.605417 2 org.freedesktop.DBus :1.16 /org/freedesktop/DBus org.freedesktop.DBus NameAcquired sig 1689986806.605524 4 org.freedesktop.DBus :1.16 /org/freedesktop/DBus org.freedesktop.DBus NameLost mc 1689986810.994514 2 :1.17 org.bluez /org/bluez/hci0 org.bluez.Adapter1 StartDiscovery