systemctl 서비스를 시작하지 못했습니다. 잘못된 인수


0

루트 권한으로 시작할 때 Qt 응용 프로그램을 실행해야합니다. 아래는 systemctl을 사용하여 만든 스크립트입니다. QtApp.service

[Unit]
Description=QtApp

[Service]
ExecStart= exec su -l user -c 'export DISPLAY=:0; /QtInst/QtApp'
Restart=always

[Install]
WantedBy=multi-user.target

그러나 서비스를 시작하기 위해 명령을 실행하면 sudo systemctl start QtApp.service다음과 같은 오류가 발생합니다.

Failed to start QtApp.service: Unit QtApp.service is not loaded properly: Invalid argument.

에러의 상세는 이쪽

systemctl status QtApp.service
● QtApp.service - QtApp
   Loaded: error (Reason: Invalid argument)
   Active: inactive (dead)

Jul 06 15:23:54 user-pc systemd[1]: [/etc/systemd/system/QtApp.service:5] Executable path is not absolute, ignoring: exec su -l user -c 'export DISPLAY=:0; /QtInst/QtApp'
Jul 06 15:23:54 user-pc systemd[1]: QtApp.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
Jul 06 15:26:08 user-pc systemd[1]: [/etc/systemd/system/QtApp.service:5] Executable path is not absolute, ignoring: exec su -l user -c 'export DISPLAY=:0; /QtInst/QtApp'
Jul 06 15:26:08 user-pc systemd[1]: QtApp.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

답변:


1

Executable path is not absolute그것은 의미 exec합니다.

일반적으로 exec여기에는 의미가 없습니다. 주어진 명령으로 쉘을 대체하는 쉘 내장입니다. exec실행 파일이 없기 때문에 실행 파일에 대한 절대 경로 는 없습니다.

su 실행은. 라인은

ExecStart=/bin/su -l user -c 'export DISPLAY=:0; /QtInst/QtApp'

그러나 시스템 서비스에서는 사용 su하는 것이 좋지 않을 수 있습니다. 시스템 서비스를 특정 사용자를 통해 실행하고 부팅시 시작하려면 어떻게합니까?를 참조하십시오.


0

오류는 말합니다

Executable path is not absolute, ignoring: exec su -l user -c 'export DISPLAY=:0; /QtInst/QtApp'

/ QtInst / QtApp 대신 절대 경로 (예 : / usr / local / QtInst / QtApp )를 사용 하십시오 .

관련 있을 수 있습니다.


실제로 실행 파일은/QtInst/
CodeDezk

ExecStart = 후에 공백을 삭제하려고 했습니까? ExecStart = "exec su -l user -c 'export DISPLAY = : 0; / QtInst / QtApp'"
Andy Powers

아니요, 시도하겠습니다
CodeDezk

0

일반적으로 여기서 "잘못된 인수"는 단위 정의 파일 자체입니다. 디버깅하려면 다음을 사용할 수 있습니다.

sudo systemd-analyze verify QtApp.service

또는 사용자의 로컬 서비스 인 경우 :

sudo systemd-analyze --user verify QtApp.service
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.