在Ubuntu 16.04 GNOME上使用systemd的x11vnc

我有麻烦启动Ubuntu的服务器上的16.04 Gnome x11vnc服务。 它在14.04以前工作得很好。 不知道是否与x11vnc本身或systemd有关。

这是systemd服务文件:

[Unit] Description=Start x11vnc at startup. After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared -o /var/log/x11vnc.log [Install] WantedBy=multi-user.target 

/etc/x11vnc.pass存在,并使用x11vnc -storepasswd /etc/x11vnc.passwd

重新启动后,x11vnc启动,但没有运气与vnc连接,x11vnc.log文件说:

 03/05/2017 16:12:19 passing arg to libvncserver: -rfbauth 03/05/2017 16:12:19 passing arg to libvncserver: /etc/x11vnc.pass 03/05/2017 16:12:19 passing arg to libvncserver: -rfbport 03/05/2017 16:12:19 passing arg to libvncserver: 5900 03/05/2017 16:12:19 x11vnc version: 0.9.13 lastmod: 2011-08-10 pid: 30259 xauth: unable to generate an authority file name 03/05/2017 16:12:19 -auth guess: failed for display='unset' 03/05/2017 16:12:19 -auth guess: since we are root, retrying with FD_XDM=1 03/05/2017 16:12:19 -auth guess: failed for display='unset' 

为了validationx11vnc工作正常,我只需手动在服务器上运行:

 x11vnc -rfbauth /etc/x11vnc.passwd 

并与我可以成功连接到VNC。 但是我怎样才能自动启动它?

这听起来像你的Upstart脚本在用户login时运行 。 然后,它将访问与login相关的环境variables,并以用户身份运行。

您在后台以root用户身份运行systemd转换, 而不是在login会话的上下文中运行。

如果您希望在特定用户login时启动此function,请考虑使用Ubuntu Unity 自动启动function。

根据我的经验,systemd不适合在graphicslogin过程中启动用户应用程序。