利用可能なD-Busサービスのリストのようなものはありますか?私は、NetworkManager、Rhythmbox、Skype、HALが提供するものなど、いくつかの偶然の発見をしました。
提供されたサービス/インターフェースの完全なリストを見つけることができるかどうか疑問に思います。
答え1
QT
設定(短いコマンドと人間が読むことができるきちんとした出力)で、次のことを実行できます。
qdbus
セッションバスで利用可能なサービスを一覧表示し、
qdbus --system
システムバスで利用可能なサービスが一覧表示されます。
利用可能なすべての設定でdbus-send
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames
同様に、メッセージバスが指定qdbus
または指定されていない場合、メッセージバスはログインセッションに送信されます。したがって、セッションバスで利用可能なサービスは上記にリストされています。システム全体のメッセージバスを使用するには、次を使用します。--session
dbus
--system
dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames
答え2
Pythonを使用すると、はるかに簡単です。
システムサービス:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
セッションサービス:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
答え3
qdbusviewer
あなたの親友です。また、D-busメッセージを送信することができます:
答え4
私は好むbusctl
。他のツールとは異なり、
このツールはデフォルトでバスを使用するため、セッションマネージャと通信するにはスイッチを明示的に使用する必要があります。また、コマンドが指定されていない場合、このコマンドはデフォルトの操作です。qdbus
dbus-send
--system
--user
list
バス制御
同じですか?
Busctlリスト - システム
または
# busctl list
NAME PID PROCESS USER CONNECTION UNIT SESSION DESCRIPTION
:1.0 162 systemd-timesyn systemd-timesync :1.0 systemd-timesyncd.service - -
:1.1 157 systemd-network systemd-network :1.1 systemd-networkd.service - -
:1.10 199 phosphor-dump-m root :1.10 obmc-dump-monitor.service - -
:1.11 216 fru-device root :1.11 xyz.openbmc_project.FruDevice.service
...
それぞれの木を見た後
# busctl tree :1.0
`-/org
`-/org/freedesktop
|-/org/freedesktop/LogControl1
`-/org/freedesktop/timesync1