GNU/Linux >> Tutoriels Linux >  >> Debian

Debian - Systemd :le service ne dispose pas des paramètres Execstart=et Execstop=. Refusant?

J'essaie d'exécuter mon application en tant que démon/service sur une distribution Debian via systemd . Voici mon fichier de service :

[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

Je copie cela dans /lib/systemd/system/myapp.service . Je lance alors :

sudo systemctl enable myapp

Je vérifie ensuite l'état :

sudo systemctl status myapp

Et je vois ces erreurs :

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

Quand je fais which java Je vois :

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

Donc je ne comprends pas pourquoi systemd se plaint du chemin exécutable. Des idées sur la façon dont je peux résoudre les problèmes ?

Réponse acceptée :

Le sudo chemin n'est pas absolu. Si votre unité systemd est une unité système, le sudo ne devrait de toute façon pas être nécessaire, car les unités système sont exécutées en tant que root par défaut.

EDIT :au lieu d'exécuter la JVM et l'ensemble de l'application Java en tant que root, il serait probablement préférable d'exécuter le service en tant qu'utilisateur non privilégié. Si l'application a besoin d'une capacité qui n'est normalement pas accordée aux utilisateurs non privilégiés, elle peut être ajoutée avec le AmbientCapabilities paramètre. Par exemple, en ajoutant les lignes suivantes au [Service] rubrique :

AmbientCapabilities=CAP_SYS_RAWIO
User=nobody

le service est exécuté en tant qu'utilisateur nobody mais obtient le CAP_SYS_RAWIO capacité.


Debian
  1. Configurer un serveur et un client NFS sur Debian Wheezy

  2. Configurer un serveur et un client NFS sur Debian 9 (Stretch)

  3. Debian – Comment fonctionnent les services dans Debian et comment puis-je les gérer ?

  4. Debian – Demande de démarrage de service répétée trop rapidement, refusant de démarrer ?

  5. Comment installer Monit (surveillance des processus et des services) sur Ubuntu / Debian

Comment démarrer, arrêter et redémarrer des services sur Debian

Installer et exécuter Jenkins avec Systemd et Docker

Comment créer et exécuter un script shell dans Debian 10

Comment démarrer, arrêter et redémarrer les services dans Debian 10

Comment écrire et exécuter un programme C dans Debian 10

Comment installer et configurer KVM sur Debian 11 Bullseye Linux