GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Debian – Systemd:Dem Dienst fehlen sowohl die Execstart=- als auch die Execstop=-Einstellung. Ablehnen?

Ich versuche, meine App als Daemon/Dienst auf einer Debian-Distribution über systemd auszuführen . Hier ist meine Servicedatei:

[Unit]
Description=MyApp Service
After=multi-user.target

[Service]
Type=simple
Restart=always
ExecStart=sudo /usr/bin/java -jar /home/pi/myapp.jar

[Install]
WantedBy=multi-user.target

Ich kopiere das nach /lib/systemd/system/myapp.service . Ich führe dann aus:

sudo systemctl enable myapp

Ich überprüfe dann den Status:

sudo systemctl status myapp

Und ich sehe diese Fehler:

● myapp.service - MyApp Service
   Loaded: error (Reason: Invalid argument)
   Active: inactive (dead)

Sep 29 09:56:24 raspberrypi systemd[1]: [/lib/systemd/system/myapp.service:8] Executable path is not absolute, ignoring: sudo /usr/bin/java -jar /home/pi/myapp.jar
Sep 29 09:56:24 raspberrypi systemd[1]: myapp.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

Wenn ich which java mache Ich sehe:

[email protected]:/lib/systemd/system $ which java
/usr/bin/java

Ich verstehe also nicht, warum systemd beschwert sich über den ausführbaren Pfad. Irgendwelche Ideen, wie ich Fehler beheben kann?

Akzeptierte Antwort:

Das sudo Pfad ist nicht absolut. Wenn Ihre Systemeinheit eine Systemeinheit ist, sollte sudo sowieso nicht erforderlich sein, da Systemeinheiten standardmäßig als root ausgeführt werden.

BEARBEITEN:Anstatt die JVM und die gesamte Java-Anwendung als Root auszuführen, wäre es wahrscheinlich besser, den Dienst als nicht privilegierten Benutzer auszuführen. Wenn die Anwendung Funktionen benötigt, die normalerweise nicht privilegierten Benutzern gewährt werden, können diese mit den AmbientCapabilities hinzugefügt werden Einstellung. Beispielsweise durch Hinzufügen der folgenden Zeilen zu [Service] Abschnitt:

AmbientCapabilities=CAP_SYS_RAWIO
User=nobody

der Dienst wird als Benutzer nobody ausgeführt erhält aber den CAP_SYS_RAWIO Fähigkeit.


Debian
  1. Einrichten eines NFS-Servers und -Clients auf Debian Wheezy

  2. Einrichten eines NFS-Servers und -Clients unter Debian 9 (Stretch)

  3. Wie man .bin- und .run-Dateien in Debian ausführt

  4. Debian – Wie funktionieren Dienste in Debian und wie kann ich sie verwalten?

  5. So installieren Sie Monit (Prozess- und Dienstüberwachung) unter Ubuntu / Debian

Wie man Dienste unter Debian startet, stoppt und neu startet

Jenkins mit Systemd und Docker installieren und ausführen

So erstellen und führen Sie ein Shell-Skript in Debian 10 aus

So starten, stoppen und starten Sie Dienste in Debian 10 neu

Wie man ein C-Programm in Debian 10 schreibt und ausführt

So installieren und konfigurieren Sie KVM unter Debian 11 Bullseye Linux