중지 및 재시작 시 올바르게 실행되도록 Java 8 시스템 서비스 구성

중지 및 재시작 시 올바르게 실행되도록 Java 8 시스템 서비스 구성

Raspbian Pi에서 Java 8 데몬/서비스를 실행하려고 합니다.라즈비안 스트레치 라이트, 내부적으로 Debian을 기반으로 함)이 부팅 systemd시 실행되기를 원할 뿐만 아니라 어떤 이유로든 충돌이 발생하면 systemd다시 시작하고 싶습니다.

실행 가능한 JAR은 에 배포되며 /home/myuser/라이브러리(파이4j) Raspberry Pi의 GPIO 핀과 통신하는 데 사용됩니다 java.~ 해야 하다로 실행하세요 sudo. 따라서 다음 명령을 실행하여 JAR을 수동으로 실행할 수 있습니다.

sudo java -jar /home/myuser/myapp.jar

그리고 아무런 문제 없이 아름답게 실행됩니다. /lib/systemd/system/myapp.service서비스 파일에 대한 최선의 시도 는 다음과 같습니다 .

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

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

[Install]
WantedBy=multi-user.target

나는 다음과 같은 것을 확실히 myapp.jar사용할 것입니다Apache Commons 데몬 라이브러리다양한 Linux SIG 명령에 지능적으로 응답합니다. 하지만:

  • systemd위의 구성을 추가하면 다음과 같은 것을 사용하여 수동으로 서비스를 시작하고 systemctl start myapp, 사용하여 서비스를 종료 systemctl stop myapp하고 다음을 사용하여 다시 시작할 수 있다면 좋을 것입니다.systemctl restart myapp
  • myapp.jar시작 시 실행해야 sudo하고 충돌 시 다시 시작해야 합니다(후자를 수행하는 방법을 모르고 전자를 올바르게 구성했는지 완전히 확신할 수 없습니다...). 마치 내가 수동으로 같은 효과를 내는 것처럼systemctl start myapp
  • 수동 명령을 사용하여 Raspberry Pi를 종료할 계획 sudo halt -p이며 수동으로 실행하는 것과 동일한 효과가 필요합니다.systemctl stop myapp

myapp.service이를 달성하기 위해 내 파일에 무엇을 추가할 수 있는지 에 대한 아이디어가 있습니까?

관련 정보