如何使用 lightdm 設置 x11vnc 以在啟動時啟動?
我有一台 X 伺服器,全部配置並執行 LightDM 和 GNOME 桌面。我安裝了 x11vnc 來訪問 X 伺服器。我在 GNOME 中打開一個終端並執行
x11vnc
. 這讓我可以通過 VNC 訪問真正的 X 伺服器,但是我想自動啟動它。我可以x11vnc
在~/.xprofile
登錄 LightDM 後啟動,但我更希望在啟動 LightDM 後立即啟動它,這樣當我登錄 VNC 時,我可以看到 LightDM 提示。我該怎麼做呢?
您可以通過添加 systemd 服務來啟動 x11vnc 伺服器
After=
LightDM 來完成此操作。確保服務在使用者下執行,lightdm
這樣您就不會遇到討厭的 XAuthorityNo 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
應該由 user 執行lightdm
,這是一個系統使用者,其目的是在 LightDM 登錄提示期間執行 X 客戶端。該使用者擁有 X 伺服器,因此為了讓應用程序在登錄提示符下執行,您需要以該使用者身份執行它們。
ExecStart=/usr/bin/x11vnc -display %i
是啟動此服務時要執行的命令,它表示 startx11vnc
on display%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
、和上執行多個 VNC 伺服器。x11vnc@:0``x11vnc@:1``x11vnc@:2