Systemd

載入桌面後如何設置systemd單元啟動?

  • June 29, 2021

我像這樣為 x0vncserver 創建了 systemd 單元

[Unit]
Description=Remote desktop service (VNC)
After=graphical.target


[Service]
Type=forking
User=user
ExecStart=/usr/bin/sh -c '/usr/bin/x0vncserver -display :0 -rfbport 5900 -passwordfile /home/user/.vnc/passwd &'

[Install]
WantedBy=multi-user.target

並使其能夠執行,但它失敗了。然後我意識到,當我嘗試使用 x0vncserver 載入原始桌面時,我只能在完全載入桌面本身之後才能做到這一點。所以我必須在載入桌面後設置系統單元執行但是如何?或者任何定時的方式來設置它?雖然可以通過使用桌面會話工具但任何 systemd 方式解決方案來實現?

我的 default.target 是

# systemctl 獲取預設值 
graphical.target

第一個建議對我不起作用。所以我嘗試了一種解決方法。我將我的 x0vncserver systemd 單元設置如下

[Unit]
Description=Remote desktop service (VNC)
After=multi-user.target

[Service]
Type=forking
User=user
ExecStart=/bin/sh -c '/usr/bin/x0vncserver -display :0 -rfbport 5900 -passwordfile /home/user/.vnc/passwd &'

[Install]
WantedBy=default.target

然後由於上述服務失敗,因為它試圖在桌面:0 載入之前載入,我設置了一個 systemd 計時器單元,考慮到我的機器的桌面載入時間(舊配置較差),在定義的時間後x0vncserver.timer執行該單元,如下所示x0vncserver.service

[Unit]
Description=x0vncserver timer

[Timer]
# Time to wait after booting before it run for first time
OnBootSec=2m
Unit=x0vncserver.service

[Install]
WantedBy=default.target

然後我啟動了定時器單元systemctl enable x0vncserver.timer並重新啟動。這次它起作用了,因為我的目標是在沒有我手動干預的情況下啟動伺服器:)。

引用自:https://unix.stackexchange.com/questions/397853