Configurando o serviço systemd do Java 8 para se comportar corretamente com interrupções e reinicializações

0

Estou tentando fazer com que um daemon / serviço Java 8 seja executado em meu Raspbian Pi (usando o Raspbian Stretch Lite , que é baseado no Debian sob o capô) na inicialização via systemd . Não só quero que ele seja executado na inicialização, mas se ele falhar por algum motivo, quero que systemd o reinicie.

O JAR executável será implantado em /home/myuser/ , e por causa de uma biblioteca ( pi4j ) que está sendo usada para se comunicar com os Raspberry Pi's Pinos GPIO, o comando java deve ser executado com sudo . Portanto, posso fazer com que o JAR seja executado manualmente, emitindo:

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

E funciona maravilhosamente sem problemas. Aqui está minha melhor tentativa no arquivo /lib/systemd/system/myapp.service 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

Vou garantir que myapp.jar use algo como o Apache Commons Daemon lib para responder de maneira inteligente a os vários comandos SIG do Linux. Mas:

  • Seria ótimo se eu pudesse adicionar systemd configurações acima que me permitissem iniciar o serviço manualmente com algo como systemctl start myapp , desligá-lo com systemctl stop myapp e reiniciá-lo com systemctl restart myapp
  • Eu preciso de myapp.jar para ser executado (com sudo ) na inicialização, bem como para ser reiniciado se ele falhar (não sei como realizar o último, e não estou totalmente certo de ter configurado o anterior corretamente ou não ...); e espero que essa configuração tenha o mesmo efeito de se eu tivesse emitido manualmente systemctl start myapp
  • Eu planejo desligar o Raspberry Pi com o comando manual sudo halt -p , e preciso que tenha o mesmo efeito de se eu executei manualmente systemctl stop myapp

Alguma idéia do que eu posso adicionar ao meu arquivo myapp.service para fazer isso?

    
por smeeb 27.09.2017 / 16:15

0 respostas