GNU/Linux >> Linux Esercitazione >  >> Debian

Debian – Systemd:il servizio manca sia dell'impostazione Execstart=che di Execstop=. Rifiutare?

Sto cercando di eseguire la mia app come demone/servizio su una distribuzione Debian tramite systemd . Ecco il mio file di servizio:

[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

Lo copio in /lib/systemd/system/myapp.service . Quindi eseguo:

sudo systemctl enable myapp

Quindi controllo lo stato:

sudo systemctl status myapp

E vedo questi errori:

● 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.

Quando eseguo which java Vedo:

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

Quindi non capisco perché systemd si lamenta del percorso eseguibile. Qualche idea su come posso risolvere i problemi?

Risposta accettata:

Il sudo il percorso non è assoluto. Se la tua unità systemd è un'unità di sistema, sudo non dovrebbe essere comunque necessario, poiché le unità di sistema vengono eseguite come root per impostazione predefinita.

EDIT:invece di eseguire la JVM e l'intera applicazione Java come root, sarebbe probabilmente meglio eseguire il servizio come utente non privilegiato. Se l'applicazione necessita di alcune funzionalità normalmente non concesse a utenti non privilegiati, può essere aggiunta con AmbientCapabilities collocamento. Ad esempio, aggiungendo le seguenti righe a [Service] sezione:

AmbientCapabilities=CAP_SYS_RAWIO
User=nobody

il servizio viene eseguito come utente nobody ma viene concesso il CAP_SYS_RAWIO capacità.


Debian
  1. Configurazione di un server e client NFS su Debian 9 (Stretch)

  2. Abilitazione condizionata dei file Systemd tramite Debian Packaging?

  3. Debian:come funzionano i servizi in Debian e come posso gestirli?

  4. Debian:modo corretto di utilizzare Onfailure in Systemd?

  5. Systemd:utilizzo sia di After che di Requires

Come avviare, arrestare e riavviare i servizi su Debian

Installa ed esegui Jenkins con Systemd e Docker

Come creare ed eseguire uno script di shell in Debian 10

Come avviare, arrestare e riavviare i servizi in Debian 10

Come scrivere ed eseguire un programma C in Debian 10

Come installare e configurare KVM su Debian 11 Bullseye Linux