GNU/Linux >> Tutoriales Linux >  >> Debian

Debian – Systemd:el servicio carece de la configuración Execstart=y Execstop=. ¿Rechazar?

Estoy tratando de ejecutar mi aplicación como un demonio/servicio en una distribución de Debian a través de systemd . Aquí está mi archivo de servicio:

[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 en /lib/systemd/system/myapp.service . Luego ejecuto:

sudo systemctl enable myapp

Luego compruebo el estado:

sudo systemctl status myapp

Y veo estos errores:

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

Cuando hago which java Veo:

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

Así que no entiendo por qué systemd se queja de la ruta del ejecutable. ¿Alguna idea de cómo puedo solucionar el problema?

Respuesta aceptada:

El sudo El camino no es absoluto. Si su unidad systemd es una unidad del sistema, el sudo no debería ser necesario de todos modos, ya que las unidades del sistema se ejecutan como root de forma predeterminada.

EDITAR:en lugar de ejecutar la JVM y toda la aplicación Java como raíz, probablemente sería mejor ejecutar el servicio como un usuario sin privilegios. Si la aplicación necesita alguna capacidad que normalmente no se otorga a los usuarios sin privilegios, se puede agregar con AmbientCapabilities entorno. Por ejemplo, agregando las siguientes líneas al [Service] sección:

AmbientCapabilities=CAP_SYS_RAWIO
User=nobody

el servicio se ejecuta como usuario nobody pero se le otorga el CAP_SYS_RAWIO capacidad.


Debian
  1. Configuración de un servidor y cliente NFS en Debian 9 (Stretch)

  2. ¿Habilitación condicional de archivos Systemd a través del paquete Debian?

  3. Debian:¿cómo funcionan los servicios en Debian y cómo puedo administrarlos?

  4. Cómo instalar Monit (Monitoreo de procesos y servicios) en Ubuntu / Debian

  5. Systemd:Uso de After y Requires

Cómo iniciar, detener y reiniciar servicios en Debian

Instale y ejecute Jenkins con Systemd y Docker

Cómo crear y ejecutar un script de Shell en Debian 10

Cómo iniciar, detener y reiniciar servicios en Debian 10

Cómo escribir y ejecutar un programa C en Debian 10

Cómo instalar y configurar KVM en Debian 11 Bullseye Linux