D-Bus
找出 DBus 服務名稱的所有者
我找不到找到實現該
org.freedesktop.Notifications
服務的程序的方法。是否可以要求 DBus 告訴我什麼程序提供它?問這個問題的原因很平庸:我找到了一個我想使用的新桌面通知守護程序,但它不會啟動,而是抱怨這條消息
失名。是否正在執行另一個通知守護程序?
但是,我無法確定哪個程序擁有該名稱。我已經解除安裝了所有其他通知守護程序,重新啟動了 X 伺服器,甚至重新啟動了機器。
但是,當我執行此命令時:
dbus-send --session --dest=org.freedesktop.DBus --type=method_call \ --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
string "org.freedesktop.Notifications"
存在於輸出中,所以有些東西持有該名稱,我無法啟動我想要的守護程序。
在許多系統中作為軟體包提供的 d-bus 調試實用程序d-feet似乎能夠找到提供服務的程序 ID 和命令。例如,我在Fedora 23 xfce4 X11 systemd平台上執行它,選擇
Session Bus
並輸入服務名稱org.freedesktop.Notifications
。它自省服務,啟動它,並顯示 pid 和/usr/lib64/xfce4/notifyd/xfce4-notifyd
命令:
PID
您可以通過以下方式獲取來電者:org.freedesktop.DBus.GetConnectionUnixProcessID
gdbus call --session --dest org.freedesktop.DBus --object-path / --method \ org.freedesktop.DBus.GetConnectionUnixProcessID org.freedesktop.Notifications
印刷
(uint32 737,)
所以有你的
PID
。如果您更喜歡dbus-send
(正如gdbus
GNOME 特定的那樣),那麼:dbus-send --session --print-reply --dest=org.freedesktop.DBus / \ org.freedesktop.DBus.GetConnectionUnixProcessID string:org.freedesktop.Notifications