温馨提示×

Ubuntu VNC如何进行日志记录

小樊
42
2025-12-20 07:15:07
栏目: 智能运维

Ubuntu VNC 日志记录指南

一 日志位置与快速查看

  • 常见 VNC 实现(如 TigerVNCTightVNCvnc4server)会将运行日志写入用户主目录的 ~/.vnc/,文件名为 主机名:显示号.log(例如:ubuntu:1.logVM-0-9-ubuntu:1.log)。启动或重启 VNC 时,终端会打印类似 “Log file is /home/ubuntu/.vnc/ubuntu:1.log” 的提示,可直接据此定位日志文件。查看方式示例:
    • 查看日志:cat ~/.vnc/ubuntu:1.log
    • 实时跟踪:tail -f ~/.vnc/ubuntu:1.log
    • 列出实例:ps aux | grep vncserver
    • 端口检查:ss -ltnp | grep 590(VNC 显示号 N 通常对应端口 590N
      以上路径与现象在 Ubuntu 18.04/20.04/22.04 搭配 TigerVNC/TightVNC/vnc4server 的实践中均适用。

二 使用 systemd 托管时的日志

  • 若通过 systemd 管理 VNC(例如创建了 /etc/systemd/system/vncserver@.service),除 ~/.vnc/*.log 外,还可用 journalctl 查看服务日志:
    • 查看服务日志:journalctl -u vncserver@1 -b
    • 实时跟踪:journalctl -u vncserver@1 -f
    • 按时间过滤:journalctl -u vncserver@1 --since “2025-12-20 00:00:00”
  • 建议同时保留 ~/.vnc/*.log 与 journalctl,前者记录 VNC 会话细节,后者便于排查 systemd 层面的启动/重启/权限问题。

三 将输出重定向到自定义日志文件

  • 直接运行方式:在启动脚本或命令行中将 stdout/stderr 重定向到指定文件,便于集中审计与轮转。
    • 示例脚本 /home/ubuntu/vncserver-day.sh:
      #!/usr/bin/env bash
      set -e
      vncserver -kill :1 >/dev/null 2>&1 || true
      exec vncserver :1 >>/home/ubuntu/vncserver-run.log 2>&1
      
    • 赋权并测试:
      chmod +x /home/ubuntu/vncserver-day.sh
      /home/ubuntu/vncserver-day.sh
      tail -f /home/ubuntu/vncserver-run.log
      
    • 定时重启并将脚本自身输出也记录(便于审计重启过程):
      # crontab -e
      0 0 * * * /home/ubuntu/vncserver-day.sh >>/home/ubuntu/vncserver-day-log.log 2>&1
      
  • systemd 方式:在单元文件中为 ExecStart/ExecStop 增加日志重定向,例如:
    [Service]
    ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i >>/var/log/vncserver@%i.log 2>&1
    ExecStop=/usr/bin/vncserver -kill :%i >>/var/log/vncserver@%i.log 2>&1
    StandardOutput=append:/var/log/vncserver@%i.log
    StandardError=append:/var/log/vncserver@%i.log
    
    提示:使用 systemd 时,若同时配置了 StandardOutput/StandardError 与自行重定向,注意避免重复写入或冲突(按需二选一或统一到 journald)。

四 日志轮转与长期保留

  • 建议对自定义日志(如 /var/log/vncserver@*.log~/vncserver-*.log)配置 logrotate,示例:
    /var/log/vncserver@*.log
    /home/*/.vnc/*.log {
        daily
        rotate 30
        missingok
        compress
        delaycompress
        copytruncate
        notifempty
    }
    
  • 若使用 systemd 的 journald,可通过 /etc/systemd/journald.conf 调整 SystemMaxUseMaxRetentionSec 等参数控制持久化与保留策略,然后使用 systemctl restart systemd-journald 使配置生效。

0