我有一个X服务器,所有配置和运行与LightDM和GNOME桌面。我安装了x11vnc来访问X服务器。我在GNOME中打开一个终端并运行x11vnc
。这让我可以访问真正的X服务器,但是我想要自动启动它。我可以将x11vnc
放在~/.xprofile
中,以便在登录LightDM之后启动,但我更希望在LightDM启动后立即启动,这样当我登录VNC时,就可以看到LightDM提示符。我该怎么做呢?
发布于 2021-06-07 14:04:16
可以通过添加systemd服务来启动x11vnc服务器,启动After=
LightDM。确保服务是在用户lightdm
下运行的,这样就不会出现令人讨厌的XAuthority No protocol specified
错误。
/etc/systemd/system/x11vnc@..service:
[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
下的进程应该由用户lightdm
运行,用户D9
的目的是在LightDM登录提示期间运行X客户端。这个用户拥有X服务器,因此为了让应用程序在登录提示符中运行,您需要以这个用户的身份运行它们。
ExecStart=/usr/bin/x11vnc -display %i
是在此服务被激活时运行的命令,它表示启动x11vnc
on display %i
,它指的是启动服务时在"@“符号之后出现的任何内容。
Restart=always
说,每当服务启动失败时,再试一次。
RestartSec=3
说每次重试都要等待3秒。
WantedBy=graphical.target
说,每当systemd打开图形系统(遗留的运行级5)时,都要运行服务。
要加载单元(使systemd“查看”它),请运行以下命令
# systemctl daemon-reload
若要启用它(使其在引导时启动),请运行以下命令
# systemctl enable x11vnc@
如果是您希望给VNC访问权限(通常是:0
)启动它的X显示器,则运行以下命令
# systemctl start x11vnc@
也是如此。
注意,您可以在同一个单元文件下运行多个独立的服务,方法是在"@“之后传递不同的显示。例如,您可以在X上运行多个VNC服务器,分别显示:0
、:1
和:2
,在端口5900
、5901
和5902
上运行x11vnc@:0
、x11vnc@:1
和x11vnc@:2
。
https://unix.stackexchange.com/questions/653221
复制相似问题