시스템 서비스 파일에서 `xhost` 설정

시스템 서비스 파일에서 `xhost` 설정

DISPLAY=:0 xhost +시스템이 시작될 때마다 실행 하고 싶습니다 . (나는 안전상의 위험을 알고 있습니다 xhost +.)

이 명령은 로컬에서 실행되며 잘 작동합니다.

username@hostname:`$ DISPLAY=:0 xhost +
access control disabled, clients can connect from any host

그런데 다음 systemd 서비스 파일을 통해 실행하려고 하면 아래와 같이 실패합니다.

username@hostname:/etc/systemd/system$ cat set-xhost.service 
[Unit]
Description=Set access control for X server

[Service]
Type=oneshot
Environment=DISPLAY=:0
ExecStart=/usr/bin/xhost +

[Install]
WantedBy=multi-user.target
username@hostname:~$ sudo systemctl start set-xhost.service
Job for set-xhost.service failed because the control process exited with error code. See "systemctl status set-xhost.service" and "journalctl -xe" for details.

username@hostname:~$ sudo journalctl -u set-xhost.service
Jun 09 12:09:28 hostname systemd[1]: Starting Set access control for X server...
Jun 09 12:09:28 hostname xhost[7067]: No protocol specified
Jun 09 12:09:28 hostname xhost[7067]: /usr/bin/xhost:  unable to open display ":0"
Jun 09 12:09:28 hostname systemd[1]: set-xhost.service: Main process exited, code=exited, status=1/FAILURE
Jun 09 12:09:28 hostname systemd[1]: Failed to start Set access control for X server.
Jun 09 12:09:28 hostname systemd[1]: set-xhost.service: Unit entered failed state.
Jun 09 12:09:28 hostname systemd[1]: set-xhost.service: Failed with result 'exit-code'.

그 이유는 무엇입니까? 내가 아는 한 이것이 작동해야합니다. 작동하지 않는다는 것은 제가 이 분야에 대한 몇 가지 중요한 지식을 놓치고 있다는 것을 의미합니다.

답변1

예를 들어 종속성을 지정하지 않았기 때문에 After=<the service that starts your X11 server>systemd는 일반적으로 시작 중에 가능한 한 빨리 서비스를 실행합니다.

"가능한 한 빨리"는 실제 X11 서버가 시작되기 전일 가능성이 높습니다. 그리고 xhost실행 중인 X11 서버에 접속할 수 있는 경우에만 작동합니다.

관련 정보