시작 시 시스템 서비스에서 GUI를 여는 방법은 무엇입니까?

시작 시 시스템 서비스에서 GUI를 여는 방법은 무엇입니까?

명령줄에서 VMWare Workstation 가상 머신을 시작하려고 합니다. root다음 명령을 실행하여 (대신) 내 사용자로 이 작업을 수행 할 수 있습니다.

/usr/bin/vmplayer /home/myUser/vmware/myVm.vmx

이제 이 가상 머신이 부팅 시 시작되도록 설정하기 위해 /lib/systemd/system/myService.service다음 콘텐츠로 서비스를 생성합니다.

[Unit]
Description=my vm service

[Service]
User=myUser
ExecStart=/usr/bin/vmplayer /home/myuser/vmware/myVm.vmx
Environment=DISPLAY=:0

[Install]
WantedBy=multi-user.target

sudo systemctl restart myService터미널에서 서비스를 실행 하면 (예:) 가상 머신 창이 팝업되고 올바르게 시작되는 것을 볼 수 있습니다. 그러나 시스템을 재부팅하면 가상 머신이 시작되지 않고 이것이 status나타납니다 .

Jan 23 12:55:59 home systemd[1]: Started myService service.
Jan 23 12:56:00 home truenas.sh[848]: [AppLoader] Use shipped Linux kernel AIO access library.
Jan 23 12:56:00 home truenas.sh[848]: An up-to-date "libaio" or "libaio1" package from your system is preferred.
Jan 23 12:56:00 home vmplayer[848]: cannot open display: :0
Jan 23 12:56:00 home systemd[1]: myService.service: Main process exited, code=exited, status=1/FAILURE
Jan 23 12:56:00 home systemd[1]: myService.service: Failed with result 'exit-code'.

환경이 문제를 해결할 것이라고 생각했지만 DISPLAY=:0이것이 바로 오류이고 수정할 수 없습니다.

답변1

@Stephen Boston이 의견에서 지적했듯이 시스템 사용자 서비스를 사용해야 하지만 유닛에서 일부 지시문을 변경, 제거 및 추가해야 합니다.

  1. WantedBy=multi-user.target로 변경WantedBy=graphical-session.target
  2. 지시어: PartOf=graphical-session.targetAfter=graphical-session.target섹션이 추가되었습니다 [Unit].
  3. [Service]지시어에 추가합니다:Type=exec
  4. 당신은 삭제할 수 있습니다Environment=DISPLAY=:0
  5. [Service]아마도 다음 섹션에 이 지시문을 추가하고 싶을 수도 있습니다 .Restart=no

따라서 귀하의 단위는 다음과 같습니다.

[Unit]
Description=my vm service
PartOf=graphical-session.target
After=graphical-session.target

[Service]
Type=exec
Restart=no
ExecStart=/usr/bin/vmplayer /home/myuser/vmware/myVm.vmx

[Install]
WantedBy=graphical-session.target

마지막으로 장치를 $HOME/.config/systemd/user/: 디렉토리 아래에 놓고 활성화/시작하려면 다음을 사용해야 합니다 systemctl --user .....

systemctl --user enable myService.service

systemctl --user start myService.service

.desktop파일을 사용하여 StartUp에서 응용 프로그램을 실행하고 /etc/xdg/autostart또는 보기에 배치 할 수도 있습니다 ~/.config/autostart.이 답변자세한 내용은.

관련 정보