在 Ubuntu 18.04 上配置 TigerVNC systemd 进程

在 Ubuntu 18.04 上配置 TigerVNC systemd 进程

我一直在尝试让 TigerVNC 在桌面 Ubuntu 18.04(GNOME 等)的全新安装上工作。运行vncserver :1 -localhost no使我可以完美连接,但我的 systemd 服务似乎无法工作。

系统启动后登录:

Xvnc TigerVNC 1.7.0 - built Dec  5 2017 09:25:01
Copyright (C) 1999-2016 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 11905000, The X.Org Foundation


Wed Jul 10 15:13:27 2019
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5901
 vncext:      created VNC server for screen 0
vncconfig: unable to open display ":1"

** (process:1184): WARNING **: 15:13:28.311: Could not make bus activated clients aware of XDG_CURRENT_DESKTOP=GNOME environment variable: Could not connect: Connection refused

在终端 ( ) 中手动启动 vncserver 后登录vncserver :1 -localhost no

Xvnc TigerVNC 1.7.0 - built Dec  5 2017 09:25:01
Copyright (C) 1999-2016 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 11905000, The X.Org Foundation


Wed Jul 10 15:14:25 2019
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5901
 vncext:      created VNC server for screen 0
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":1"
      after 175 requests (174 known processed) with 0 events remaining.

x启动:

#!/bin/sh

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic & dbus-launch --exit-with-session gnome-session &

[电子邮件受保护]

[Unit]
Description=TigerVNC Service
After=syslog.target network.target

[Service]
Type=simple
User=<user>
PAMName=login

PIDFile=/home/<user>/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -localhost no
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

答案1

经过一番试验和错误后,我决定在用户​​登录后以用户模式运行该进程。服务在用户登录后启动,并且启用自动登录后,它可以完美地满足我的目的。

我删除了文件并创建了一个包含以下内容的新文件(并创建了丢失的文件夹)。/etc/systemd/system/[email protected]$HOME/.local/share/systemd/user/[email protected]

[电子邮件受保护]

[Unit]
Description=TigerVNC Service

[Service]
Type=forking
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -localhost no
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=default.target

然后我启用了该服务systemctl daemon-reload --user并使用 启用了它systemctl enable vncserver@1 --user

答案2

我无法让它与 SystemD 'User=' 行一起工作,而 evan 无法与 PAMName 行一起工作。

经过一番尝试和错误后,我能够使以下内容发挥作用。我不得不使用“su”,但它仍然有效。注意:您需要将用户名替换为您的 Linux 用户名。对于设置 TigerVNC 的新手,您还必须为此用户创建一个 vncpasswd。为此,只需在启动服务或重新引导系统之前在 shell 中以用户名运行 vncpasswd 即可。

另存为:/etc/systemd/system/[电子邮件受保护]

[单元]
描述=TigerVNC 服务
After=syslog.target 网络.target

[服务]
类型=简单
退出后剩余=是
成功退出状态=0

PIDFile=/home/用户名/.vnc/%H:%i.pid
ExecStartPre=/bin/su -l 用户名 -c "/usr/bin/tigervncserver -kill :%i > /dev/null"
ExecStart=/bin/su -l 用户名 -c "/usr/bin/tigervncserver :%i -localhost no"
ExecStop=/bin/su -l 用户名 -c "/usr/bin/tigervncserver -kill :%i"

[安装]
WantedBy=default.target

答案3

su 的解决方法Paul Richards 发现的解决方案是迄今为止在 Ubuntu 18.04 上将 TigerVNC 作为服务启动的最佳解决方案。

要获得 Ubuntu 桌面(而不是 Gnome 桌面),请编辑 ~/.vnc/xstartup:

#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

vncconfig −nowin &
dbus-launch --exit-with-session env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu &

相关内容