Systemd
載入桌面後如何設置systemd單元啟動?
我像這樣為 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
並重新啟動。這次它起作用了,因為我的目標是在沒有我手動干預的情況下啟動伺服器:)。