systemd를 통해 그래픽 애플리케이션을 시작하고 싶습니다. 이전에 udev를 통해 이 작업을 시도했지만 규칙이 종료된 후 애플리케이션이 종료되었습니다. systemd를 통해 직접 응용 프로그램을 실행하면 작동하지만 일부 제약 조건으로 응용 프로그램을 시작하는 스크립트를 실행하면 작동하지 않습니다.
내 서비스 파일은 다음과 같습니다.
[Unit]
Description=App starter
[Service]
Type=oneshot
RemainAfterExit=yes
Environment=DISPLAY=:0
Environment=HOME=/home/user/
ExecStart=/home/user/runApp
[Install]
WantedBy=multi-user.target
Journalctl -xe가 나에게 준
Sep 25 13:50:00 host systemd[1]: Starting App starter...
Subject: A start job for unit app.service has begun execution
Defined-By: systemd
Support: https://forum.manjaro.org/c/support
A start job for unit xournalpp.service has begun execution.
The job identifier is 19196.
Sep 25 13:50:00 host runApp[313232]: App is not running
Sep 25 13:50:00 host systemd[1]: app.service: Main process exited, code=exited, status=1/FAILURE
Subject: Unit process exited
Defined-By: systemd
Support: https://forum.manjaro.org/c/support
An ExecStart= process belonging to unit xournalpp.service has exited.
The process' exit code is 'exited' and its exit status is 1.
Sep 25 13:50:00 host systemd[1]: app.service: Failed with result 'exit-code'.
Subject: Unit failed
Defined-By: systemd
Support: https://forum.manjaro.org/c/support
The unit xournalpp.service has entered the 'failed' state with result 'exit-code'.
Sep 25 13:50:00 host systemd[1]: Failed to start App starter.
Subject: A start job for unit app.service has failed
Defined-By: systemd
Support: https://forum.manjaro.org/c/support
A start job for unit app.service has finished with a failure.
The job identifier is 19196 and the job result is failed.
여기에 스크립트가 있습니다. 어쩌면 백그라운드에서 실행되기 때문일까요 &
? 스크립트를 재사용하고 싶기 때문에 이것이 필요합니다.
#!/bin/bash
if pgrep app
then
echo App is running
wmctrl -x -a app
wmctrl -x -r app -b "add,maximized_vert,maximized_horz"
else
echo App is not running
/usr/bin/app & disown
fi
답변1
어쩌면 권한 문제일 수도 있습니다.
/home/user
다른 사용자는 일반적으로 이러한 항목에 액세스할 수 없으며 apparmor 및 selinux와 같은 보안 시스템은 일반적으로 이러한 사용을 금지합니다.
systemd에서 스크립트를 사용하려면 /usr/local/bin
.