Ubuntu 上 TigerVNC 黑屏的排查与修复
一、快速修复流程
vncserver -kill :1,再执行 vncserver :1 -geometry 1920x1080 -localhost no。若此前在 conda base 环境,先执行 conda deactivate 再启动 VNC,可避免会话初始化异常导致的黑屏。连接端口为 5901(显示号 N 对应 5900+N)。如使用 UFW,放行端口:sudo ufw allow 5901/tcp。以上步骤能解决大多数“黑屏但能连上”的场景。二、核对 xstartup 启动会话
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
exec gnome-session &
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
chmod +x ~/.vnc/xstartup,然后 vncserver -kill :1 再 vncserver :1 -geometry 1920x1080。若脚本不存在或不完整,VNC 会黑屏或仅见灰色背景/叉号鼠标。三、常见根因与对应处理
vncserver -kill :N 清理,必要时删除残留锁文件:sudo rm /tmp/.X11-unix/XN 与 sudo rm /tmp/.XN-lock,再重开会话。四、使用 systemd 管理时的要点
[Unit]
Description=TigerVNC server at display %i
After=network.target
[Service]
Type=forking
User=youruser
Group=youruser
WorkingDirectory=/home/youruser
PIDFile=/home/youruser/.vnc/%H%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i >/dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -geometry 1920x1080 -localhost no
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload && sudo systemctl enable --now vncserver@1.service。如需开机自启与远程访问,上述配置已包含常用参数。五、日志与进一步排查
~/.vnc/你的主机名:1.log,根据报错修正桌面启动命令、权限或端口占用问题。nc -vz 服务器IP 5901,不通则检查防火墙/安全组/路由。必要时更换客户端(如 TigerVNC Viewer)或改用 SSH 隧道提高稳定性与安全性。