명령줄에서 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이 의견에서 지적했듯이 시스템 사용자 서비스를 사용해야 하지만 유닛에서 일부 지시문을 변경, 제거 및 추가해야 합니다.
WantedBy=multi-user.target
로 변경WantedBy=graphical-session.target
- 지시어:
PartOf=graphical-session.target
및After=graphical-session.target
섹션이 추가되었습니다[Unit]
. [Service]
지시어에 추가합니다:Type=exec
- 당신은 삭제할 수 있습니다
Environment=DISPLAY=:0
[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
.이 답변자세한 내용은.