Eu tenho um programa executável Java que posso executar digitando java -jar abc.jarno terminal. Como posso executá-lo como um serviço? Quero executá-lo como um serviço, digitando service abc start.
Eu tenho um programa executável Java que posso executar digitando java -jar abc.jarno terminal. Como posso executá-lo como um serviço? Quero executá-lo como um serviço, digitando service abc start.
Respostas:
Verifique se você está no 14.04. O Ubuntu 16.04 (e superior) usa systemd, não Upstart.
Um script inicial é um arquivo de script colocado /etc/init/e terminado em .conf.
Requer 2 seções: uma para indicar quando iniciar e outra com o comando para executar.
O script mais fácil para começar com sua amostra é:
# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
Criado como root em /etc/init/myprogram.conf.
Se o seu script exigir mais de uma linha de comando, use a scriptseção em vez da execlinha:
# myprogram.conf
start on filesystem
script
/usr/bin/java -jar /path_to/program
echo "Another command"
end script
Para habilitar a conclusão do bash para o seu serviço, adicione um link simbólico na /etc/init.dpasta:
sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
Em seguida, tente iniciar e pará-lo:
sudo service myprogram start
De acordo com o livro de receitas inicial , você pode criar pre-start/ post-starte pre-stop/ post-stopcomandos a serem executados.
Além disso, li que você deseja verificar se um processo está em execução. Verifique esta pergunta e talvez use a pre-startseção
sudo chmod +x /etc/init.d/myprogram. CUIDADO: seu método respondido não funciona no Ubuntu 16.04!
Você precisa criar um iniciante. http://upstart.ubuntu.com/getting-started.html
Upstart é (IMHO) um desastre comparado aos bons scripts de inicialização do SysV. Upstart é MUITO mais esforço, com pouca vantagem no trabalho adicionado. Com isso dito, suspeito que haverá alguns defensores iniciantes por aí que me levarão a tarefa de declarar o óbvio ;-)