是的,这段启动脚本很可能就是导致 VNC 黑屏的原因之一。
你当前启动的是:
#!/bin/sh export XKL_XMODMAP_DISABLE=1 export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME" export XDG_MENU_PREFIX="gnome-flashback-" gnome-session \ --session=gnome-flashback-metacity \ --disable-acceleration-check &
很多服务器环境:
Ubuntu Server TigerVNC x11vnc Xvnc Docker
运行:
gnome-session
经常出现:
黑屏 只有鼠标 只有背景 无限加载
因为:
gnome-settings-daemon dbus systemd user session
没有正常启动。
你的脚本最后是:
gnome-session ... &
注意最后有:
&
意味着:
gnome-session后台运行 脚本立即结束
很多 VNC Server(尤其 TigerVNC)会认为:
xstartup结束 => 会话结束
然后出现黑屏。
不要放后台:
#!/bin/sh export XKL_XMODMAP_DISABLE=1 export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME" export XDG_MENU_PREFIX="gnome-flashback-" exec gnome-session \ --session=gnome-flashback-metacity \ --disable-acceleration-check
或者:
gnome-session \ --session=gnome-flashback-metacity \ --disable-acceleration-check
检查:
echo $DBUS_SESSION_BUS_ADDRESS
如果为空:
<empty>
GNOME 大概率无法正常启动。
解决:
exec dbus-launch --exit-with-session \ gnome-session \ --session=gnome-flashback-metacity
dpkg -l | grep flashback
应至少有:
gnome-session-flashback metacity gnome-panel
否则会启动失败。
先看日志:
cat ~/.vnc/*.log
重点关注:
gnome-session-binary metacity dbus
错误。
例如:
Failed to connect to session bus
Could not acquire name org.gnome.SessionManager
metacity exited with code 1
如果这是服务器、Docker、SealSkin、noVNC 场景,我不建议用 GNOME。
改用 XFCE:
sudo apt install xfce4 xfce4-goodies
~/.vnc/xstartup
#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4
赋权:
chmod +x ~/.vnc/xstartup
重启:
vncserver -kill :1 vncserver :1
XFCE 在:
环境下稳定性远高于 GNOME Flashback。
建议先执行:
cat ~/.vnc/*.log | tail -100
把最后 100 行日志发出来,我基本可以直接定位到底是:
xstartup
dbus
metacity
这几种情况中的哪一种。
Github开源生信云平台 DEMO