我正在尝试将 x11vnc 作为服务运行,以便在启动时启动它。下面是我使用的代码,取自两个答案这里。
[Unit]
Description=VNC Server for X11
Requires=display-manager.service
After=display-manager.service
[Service]
Type=forking
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/vnc.passwd -rfbport 5902 -shared
ExecStop=/usr/bin/x11vnc -R stop
Restart=on-failure
RestartSec=2
[Install]
WantedBy=multi-user.target
然后我运行:
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service
在最后一个命令中,我收到以下错误消息。
Job for x11vnc.service failed because a timeout was exceeded. See "systemctl status x11vnc.service" and "journalctl -xe" for details.
没有确切的答案systemctl status x11vnc.service
,但journalctl -xe
如果需要,我可以提供。
我注意到的另一件事是,端口 5900、5901 可以在不同的启动中打开或关闭。我不知道哪个进程占用了它们。
下面的代码可以工作,但是在集成到上面的服务中时无法启动。
重新启动 Ubuntu 时,它最初运行,但几分钟后停止运行。
exec /usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/vnc.passwd -rfbport 5902 -shared
Ubuntu 版本:Ubuntu 16.04.6 LTS 发布版本:16.04 代号:xenial
我是否遗漏了什么导致 x11vnc 无法启动?
答案1
这不是修复,而是一种解决方法。我过去常常sudo crontab -e
在启动时运行 x11vnc。我只需要在下面的末尾添加这个crontab
。
@reboot exec /usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/geodev/.vnc/passwd -rfbport 5900 -shared
在任何用户登录之前启动它sudo
非常重要。x11vnc
答案2
如果你安装了另一个版本的 vncserver,则需要将其删除,然后重新启动机器并再次启动该服务