Der Fehler sagt
Executable path is not absolute, ignoring: exec su -l user -c 'export DISPLAY=:0; /QtInst/QtApp'
Verwenden Sie den absoluten Pfad (z. B. / usr / local / QtInst / QtApp ) anstelle von / QtInst / QtApp .
Dies könnte relevant sein.
Ich muss beim Start eine Qt-Anwendung mit Root-Berechtigung ausführen. Unten ist das Skript, das ich mit systemctl erstellt habe QtApp.service
[Unit] Description=QtApp [Service] ExecStart= exec su -l user -c 'export DISPLAY=:0; /QtInst/QtApp' Restart=always [Install] WantedBy=multi-user.target
Wenn ich jedoch den Befehl zum Starten des Dienstes ausführen, erhalte sudo systemctl start QtApp.service
ich einen Fehler
Failed to start QtApp.service: Unit QtApp.service is not loaded properly: Invalid argument.
Hier sind die Details des Fehlers
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.
Der Fehler sagt
Executable path is not absolute, ignoring: exec su -l user -c 'export DISPLAY=:0; /QtInst/QtApp'
Verwenden Sie den absoluten Pfad (z. B. / usr / local / QtInst / QtApp ) anstelle von / QtInst / QtApp .
Dies könnte relevant sein.
Executable path is not absolute
- es bedeutet exec
.
Im Allgemeinen exec
macht es hier keinen Sinn. Es ist eine eingebaute Shell, die die Shell durch einen gegebenen Befehl ersetzt. Es gibt keinen absoluten Pfad zur exec
ausführbaren Datei, da keine ausführbare Datei vorhanden ist.
su
ist eine ausführbare Datei. Die Zeile kann sein
ExecStart=/bin/su -l user -c 'export DISPLAY=:0; /QtInst/QtApp'
Imsu
systemd-Service ist die Verwendung jedoch möglicherweise keine gute Idee. Siehe: Wie kann ich meinen systemd-Dienst über einen bestimmten Benutzer ausführen und beim Booten starten?
Im Allgemeinen ist das "ungültige Argument" hier die Einheitendefinitionsdatei. Zum Debuggen können Sie Folgendes verwenden:
sudo systemd-analyze verify QtApp.service
oder im Falle eines lokalen Dienstes des Benutzers:
sudo systemd-analyze --user verify QtApp.service