我使用 linux,对 Xsession 有一些疑问。据我所知,/etc/X11/Xsession
脚本是在 X Window System 会话开始时启动的。但是当我检查代码时,/etc/X11/Xsession.d
我有点困惑。这里的脚本按顺序启动,99x11-common_start
最后一个包含exec $STARTUP
我记录的变量,它只是init --user
。所以事实证明,整个脚本都是为启动 init --user 而编写的?我删除了一些文件,并使用不同的用户登录,一切正常,(例如75dbus_dbus-launch
)。这是否意味着 Xsession 只启动init --user
?会话 dbus 呢,谁启动它?谢谢。
答案1
启动时会启动两个 DBus 守护进程:--session
& --system
。Xsession 中的守护进程是会话总线(用户拥有它)。
~$ ps aux | grep dbus-daemon
message+ 944 0.0 0.0 44504 5640 ? Ss 07:55 0:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
sneetsh+ 2428 0.0 0.0 43864 4340 ? Ss 07:56 0:00 dbus-daemon --fork --session --address=unix:abstract=/tmp/dbus-xcqH0l6FdF
sneetsh+ 2522 0.0 0.0 43028 3932 ? S 07:56 0:00 /usr/bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
sneetsh+ 4593 0.0 0.0 14328 964 pts/19 S+ 08:17 0:00 grep --color=auto dbus-daemon
以上输出来自 Ubuntu16.04和用途systemd
。
系统总线由
systemd
~$ service dbus status ● dbus.service - D-Bus System Message Bus Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled) Active: active (running) since Wed 2016-07-06 07:55:13 CET; 27min ago Docs: man:dbus-daemon(1) Main PID: 944 (dbus-daemon) Tasks: 1 Memory: 3.5M CPU: 1.574s CGroup: /system.slice/dbus.service └─944 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
会话总线由
upstart
~$ initctl status dbus dbus start/running, process 2428 ~$ initctl show-config dbus dbus start on starting xsession-init
(请注意,此会话 upstart 守护进程,而不是 init/system upstart 守护进程)
之前的 Ubuntu15.10使用 upstart init。
您可以使用 来验证这些pstree -up
。另一种方法是,您可以DBUS_SESSION_BUS_ADDRESS
像 一样从已删除的文件中记录变量STARTUP
。