또는에 의존 ExecStart
하면서 systemd 서비스에서 루트 권한으로 이 명령을 실행할 수 있습니까? 그렇다면 어떻게 해야 할까요?xdg-desktop-autostart.target
graphical-session.target
어떤 경우에는 Sunshine 게임 스트리밍 서버를 SteamOS에서 서비스로 실행하려고 합니다. SteamOS의 게임 모드는 Wayland를 사용합니다. Sunshine이 Wayland와 함께 작동하려면 루트 권한으로 다음 명령을 실행해야 했습니다.
PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') flatpak run dev.lizardbyte.sunshine
에 있는 bash 스크립트에 명령을 넣었습니다 /home/deck/.local/bin/sunshine
. 내 시스템 파일( sunshine.service
)은 다음과 같습니다.
[Unit]
Description=Sunshine is a self-hosted game stream host for Moonlight.
StartLimitIntervalSec=500
StartLimitBurst=5
PartOf=graphical-session.target
Wants=xdg-desktop-autostart.target
After=xdg-desktop-autostart.target
[Service]
ExecStart=/home/deck/.local/bin/sunshine
ExecStop=flatpak kill dev.lizardbyte.sunshine
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=xdg-desktop-autostart.target
시작을 사용하여 배치 /etc/systemd/service/
하고 시작하면 이 서비스가 예상대로 작동합니다 sudo systemctl start sunshine.service
. 그러나 서비스를 활성화하려는 시도는 실패합니다 sudo systemctl enable sunshine.service
. 서비스를 시스템 서비스로 활성화하면 다음 오류가 발생합니다.
Unit /etc/systemd/system/sunshine.service is added as a dependency to a non-existent unit xdg-desktop-autostart.target.
나는 이것이 왜 그런지 이해합니다. 시스템은 사용자처럼 그래픽 세션에 연결되어 있지 않습니다. 다만, services 파일을 넣을 때 사용자 서비스로 활성화할 수는 있지만, ~/.config/systemd/user/
루트 권한으로는 관련 명령이 실행되지 않기 때문에 Wayland에서는 작동하지 않습니다.