GNU/Linux >> Znalost Linux >  >> Debian

Debian – Systemd:Služba postrádá nastavení Execstart=i Execstop=. Odmítnout?

Snažím se spustit svou aplikaci jako démona/službu v distribuci Debianu přes systemd . Zde je můj soubor služeb:

[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

Zkopíruji to do /lib/systemd/system/myapp.service . Potom spustím:

sudo systemctl enable myapp

Poté zkontroluji stav:

sudo systemctl status myapp

A vidím tyto chyby:

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

Když udělám which java Vidím:

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

Takže nechápu, proč systemd si stěžuje na cestu ke spustitelnému souboru. Nějaké nápady, jak mohu odstranit potíže?

Přijatá odpověď:

sudo cesta není absolutní. Pokud je vaše systemd jednotka systémová jednotka, sudo by stejně nebylo nutné, protože systémové jednotky jsou ve výchozím nastavení spuštěny jako root.

EDIT:místo spouštění JVM a celé Java aplikace jako root by asi bylo lepší spouštět službu jako neprivilegovaný uživatel. Pokud aplikace potřebuje nějakou schopnost, která není běžně přiznávána neprivilegovaným uživatelům, lze ji přidat pomocí AmbientCapabilities nastavení. Například přidáním následujících řádků do [Service] sekce:

AmbientCapabilities=CAP_SYS_RAWIO
User=nobody

služba je spuštěna jako uživatel nobody ale má uděleno CAP_SYS_RAWIO schopnosti.


Debian
  1. Nastavení serveru a klienta NFS na Debian Wheezy

  2. Debian – Jak fungují služby v Debianu a jak je mohu spravovat?

  3. Debian – správný způsob použití Onfailure v Systemd?

  1. Nastavení serveru a klienta NFS na Debian 9 (Stretch)

  2. Jak spouštět soubory .bin a .run v Debianu

  3. Debian – požadavek na spuštění služby se opakoval příliš rychle, odmítáte spustit?

  1. Jak nainstalovat a nakonfigurovat WildFly (JBoss) na Debian 10

  2. Podmíněné povolení souborů Systemd prostřednictvím balíčku Debian?

  3. Jak nainstalovat Monit (Monitorování procesů a služeb) na Ubuntu / Debian