我有一个 X 服务器,全部配置并运行 LightDM 和 GNOME 桌面。我安装了 x11vnc 来访问 X 服务器。我在 GNOME 中打开一个终端并运行x11vnc
.这使我可以通过 VNC 访问真正的 X 服务器,但我想自动启动它。我可以在登录 LightDM 后输入启动,但我更喜欢在 LightDM 启动后立即启动它,这样当我登录 VNC 时,我可以看到 LightDM 提示符x11vnc
。~/.xprofile
我该怎么做呢?
答案1
您可以通过添加 systemd 服务来启动 x11vnc 服务器After=
LightDM 来完成此操作。确保该服务在用户下运行,lightdm
这样您就不会遇到讨厌的 XAuthorityNo protocol specified
错误。
/etc/systemd/系统/[电子邮件受保护]:
[Unit]
Description=Remote desktop service (VNC)
After=display-manager.service
[Service]
Type=simple
User=lightdm
ExecStart=/usr/bin/x11vnc -display %i
Restart=always
RestartSec=3
[Install]
WantedBy=graphical.target
After=display-manager.service
告诉 systemd 在启动此服务之前需要运行显示管理器 (LightDM)。
Type=simple
表示该进程是非分叉的,因此下面的命令ExecStart
在 VNC 服务器的生命周期内保持运行。
User=lightdm
表示下面的进程ExecStart
应该由 user 运行lightdm
,该系统用户的目的是在 LightDM 登录提示期间运行 X 客户端。该用户拥有 X 服务器,因此为了让应用程序在登录提示符下运行,您需要以该用户身份运行它们。
ExecStart=/usr/bin/x11vnc -display %i
是激活该服务时运行的命令,它表示x11vnc
在显示时启动%i
,这是指启动该服务时“@”符号后面的任何内容。
Restart=always
表示每当服务无法启动时,请重试。
RestartSec=3
表示每次重试时等待 3 秒。
WantedBy=graphical.target
表示每当 systemd 启动图形系统时就运行该服务(旧版运行级别 5)。
要加载该单元(使 systemd“看到”它),请运行命令
# systemctl daemon-reload
要启用它(使其在启动时启动),请运行命令
# systemctl enable x11vnc@<your-$DISPLAY-here>
<your-$DISPLAY-here>
您想要授予 VNC 访问权限的 X 显示在哪里(通常:0
)
要启动它,请运行命令
# systemctl start x11vnc@<your-$DISPLAY-here>
关于 的同上<your-$DISPLAY-here>
。
请注意,您可以通过在“@”后传递不同的显示来在同一单元文件下运行多个独立的服务。例如,您可以在 X 显示器:0
、:1
、:2
、 端口5900
、5901
、 以及5902
、x11vnc@:0
、x11vnc@:1
和 上运行多个 VNC 服务器x11vnc@:2
。