- 首页 >
- 问答 >
-
智能运维 >
- CentOS上TigerVNC的日志查看与故障排查
CentOS上TigerVNC的日志查看与故障排查
小樊
34
2025-12-25 08:28:25
CentOS上TigerVNC日志查看与故障排查
一 日志位置与快速查看
- 使用 systemd 查看服务日志(适用于以服务方式管理的情况,显示号为**:1时服务单元通常为vncserver@:1.service**)
- 查看全部日志:journalctl -u vncserver@:1.service
- 实时跟踪:journalctl -u vncserver@:1.service -f
- 按时间筛选:journalctl -u vncserver@:1.service --since “2025-12-25 09:00:00” --until “2025-12-25 10:00:00”
- 关键字过滤:journalctl -u vncserver@:1.service | grep -i “error|fail|exception”
- 查看实例日志文件(TigerVNC 会在用户家目录的 .vnc 下生成)
- 日志路径通常为:~/.vnc/主机名:显示号.log,例如 /root/.vnc/centos8:1.log
- 常用命令:
- 实时查看:tail -f ~/.vnc/centos8:1.log
- 检索错误:grep -i “error” ~/.vnc/centos8:1.log
- 系统级与安全日志(用于权限、认证、网络等线索)
- /var/log/messages、/var/log/secure
- 示例:grep -i “vnc\|x11” /var/log/secure
二 端口与连通性检查
- 端口规则:VNC 桌面号与端口为5900 + 显示号,例如 :1 → 5901、:2 → 5902;部分部署还会开启 HTTP 预览端口 5801(对应 :1)。
- 监听与占用:
- ss -lntp | grep 5901 或 netstat -tulpen | grep 5901
- 若端口被占用,改用其他显示号(如 :2)或释放占用进程
- 防火墙(firewalld):
- 放行端口:firewall-cmd --permanent --add-port=5901/tcp && firewall-cmd --reload
- 或放行服务:firewall-cmd --permanent --add-service=vnc-server && firewall-cmd --reload
- 连通性测试(客户端或跳板机执行):
- nc -vz 服务器IP 5901 或 telnet 服务器IP 5901
- 服务状态与端口对照检查:
- systemctl status vncserver@:1.service
- ss -lntp | grep Xvnc 或 ps -ef | grep Xvnc
三 常见故障与修复要点
- 灰屏、黑屏、鼠标黑叉
- 检查 ~/.vnc/xstartup 是否启动桌面会话,示例(GNOME):
- #!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
gnome-session &
- 确保已安装桌面环境(如 GNOME 或 XFCE),并赋予 xstartup 可执行权限:chmod +x ~/.vnc/xstartup
- 重启会话:vncserver -kill :1 && vncserver :1
- 启动失败或显示 “Error: cannot open Display: :1”
- 多见于 xstartup 执行错误或残留锁文件,先清理再启:
- vncserver -kill :1
- rm -f ~/.vnc/.pid ~/.vnc/.log
- 再启动:vncserver :1
- 检查 systemd 服务 Type、PIDFile、ExecStart/ExecStartPre 是否与用户和显示号一致(Type=forking、PIDFile=~/.vnc/%H:1.pid)
- 首次连接被拒绝或提示无密码
- 先为本用户设置 VNC 密码:vncpasswd(会在 ~/.vnc/passwd 生成条目)
- 字符乱码或语言环境异常
- 检查并设置语言:cat /etc/sysconfig/i18n,将 LANG=zh_CN.UTF-8(或 en_US.UTF-8),然后重启会话或系统
- 端口未放行导致“连接超时”
- 按上文放行 5901/tcp(或对应端口),并确认云厂商安全组策略同样放行
四 服务配置与最佳实践
- systemd 单元关键项(/etc/systemd/system/vncserver@:1.service 示例)
- [Service]
- Type=forking
- User=youruser
- Group=yourgroup
- WorkingDirectory=/home/youruser
- PIDFile=/home/youruser/.vnc/%H:1.pid
- ExecStartPre=-/usr/bin/vncserver -kill :%i >/dev/null 2>&1
- ExecStart=/usr/bin/vncserver :%i -geometry 1280x800 -depth 24
- ExecStop=/usr/bin/vncserver -kill :%i
- 修改后执行:systemctl daemon-reload && systemctl enable --now vncserver@:1.service
- 首次使用流程
- 切换目标用户:su - youruser
- 设置密码:vncpasswd
- 启动会话:vncserver :1(或交由 systemd 管理)
- 运行维护
- 查看会话:vncserver -list
- 结束会话:vncserver -kill :1
- 不建议以 root 直接运行 VNC,优先使用普通用户并通过 sudo 授权必要操作
- 浏览器访问(可选)
- 部署 noVNC:git clone https://github.com/kanaka/noVNC.git && cd noVNC && ./utils/launch.sh --vnc localhost:5901
- 访问:http://服务器IP:6080/vnc.html