哪个程序在 GNOME 2 和 GNOME 3 中启动每个用户会话的 dbus-daemon 进程(大概是通过 dbus-launch)?我想知道,因为我想将一个目录添加到 dbus-daemon 检查 .service 文件的目录列表中。
(显然,如果它是一个 sh 程序,“sh”不是我要找的答案;-)
我如何才能有效地回答这个问题?关于桌面和会话启动有哪些文档?
答案1
登录管理器通过 Xsession 脚本目录启动 dbus。如果use-session-dbus
为 Xsession 设置了该选项,则会加载并运行 dbus Xsession 脚本dbus-launch --exit-with-session $session_command
。
答案2
答案3
我不同意多比的观点。最好的办法是学会如何自己找到答案。
列出所有进程及其PID树结构:
pstree
init─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─2*[dhclient]
│ ├─dnsmasq
│ └─3*[{NetworkManager}]
├─accounts-daemon───2*[{accounts-daemon}]
├─acpid
├─avahi-daemon───avahi-daemon
├─bluetoothd
├─colord───2*[{colord}]
├─cron
├─cups-browsed
├─cupsd
├─dbus-daemon
....
因此 dbus-daemon 由 启动init
。但是请注意,有多个 dbus-daemon 在运行。
manos@box:~$ ps aux | grep dbus-daemon
message+ 845 0.0 0.0 40668 2620 ? Ss 10:48 0:03 dbus-daemon --system --fork
manos 2480 0.0 0.0 40248 2428 ? Ss 10:48 0:01 dbus-daemon --fork --session --address=unix:abstract=/tmp/dbus-o3GMKn9JC1
manos 2569 0.0 0.0 39248 2004 ? S 10:48 0:00 /bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
也就是说,至少有两个 dbus-daemon 实例正在运行。一个由 init 启动,是系统范围内的,另一个在用户登录时为其启动。通过查看完整的 PID 树结构(使用pstree
),您可以直观地找到启动第二个实例的确切进程。