我找不到方法来查找哪个程序实现了该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"
出现在输出中,所以某物保留了该名称,但我无法启动我想要的守护进程。
答案1
PID
您可以通过以下方式接听来电者org.freedesktop.DBus.GetConnectionUnixProcessID
:
qdbus org.freedesktop.DBus /org/freedesktop/DBus \
org.freedesktop.DBus.GetConnectionUnixProcessID org.freedesktop.Notifications
第737章
这就是你的PID
.
如果您愿意dbus-send
(qdbus
KDE 特定),那么:
dbus-send --session --print-reply --dest=org.freedesktop.DBus / \
org.freedesktop.DBus.GetConnectionUnixProcessID string:org.freedesktop.Notifications
uint32 737
如果您愿意gdbus
(这是 GNOME 特有的),那么:
gdbus call --session --dest org.freedesktop.DBus --object-path / --method \
org.freedesktop.DBus.GetConnectionUnixProcessID org.freedesktop.Notifications
(uint32 737,)
在更新的systemd
设置中,您还可以使用busctl
:
busctl --user call org.freedesktop.DBus /org/freedesktop/DBus \
org.freedesktop.DBus GetConnectionUnixProcessID s org.freedesktop.Notifications
u 737
答案2
d-bus 调试实用程序D 脚它在许多系统中作为包提供,似乎能够找到提供服务的进程 ID 和命令。例如,我在Fedora 23 xfce4 X11 系统平台并选择Session Bus
并输入服务名称org.freedesktop.Notifications
。它内省了服务,激活了它,并显示了 pid 和/usr/lib64/xfce4/notifyd/xfce4-notifyd
命令: