Назад | Перейти на главную страницу

x11vnc на Ubuntu 16.04 Gnome с systemd

У меня проблемы с запуском службы x11vnc на сервере Ubuntu 16.04 Gnome. Раньше он отлично работал под 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'

Чтобы убедиться, что x11vnc работает нормально, я просто вручную запускаю на сервере:

x11vnc -rfbauth /etc/x11vnc.passwd

и с этим я могу успешно подключиться к vnc. Но как я могу его запустить автоматически?

Похоже, ваш скрипт Upstart запустился когда пользователь вошел в систему. Тогда он будет иметь доступ к переменным среды, связанным с логином, и будет работать как пользователь.

Перевод systemd, который у вас есть, запускается как root в фоновом режиме, не в контексте сеанса входа в систему.

Если вы хотите, чтобы это запускалось, когда конкретный пользователь входит в систему, учитывая использование Ubuntu Unity автоматический старт функция вместо этого.

По моему опыту, systemd не очень подходит для запуска пользовательских приложений во время графического процесса входа в систему.