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:
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
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
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?