사용 가능한 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