J'ai un programme exécutable Java que je peux exécuter en tapant java -jar abc.jar
terminal. Comment puis-je l'exécuter en tant que service? Je veux l'exécuter en tant que service comme en tapant service abc start
.
J'ai un programme exécutable Java que je peux exécuter en tapant java -jar abc.jar
terminal. Comment puis-je l'exécuter en tant que service? Je veux l'exécuter en tant que service comme en tapant service abc start
.
Réponses:
Assurez-vous que vous êtes au 14.04. Ubuntu 16.04 (et supérieur) utilise systemd, pas Upstart.
Un script Upstart est un fichier de script placé à /etc/init/
et se terminant par .conf
.
Il nécessite 2 sections: une pour indiquer quand démarrer et une autre avec la commande à exécuter.
Le script le plus simple pour commencer avec votre exemple est:
# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
Créé en tant que root sous /etc/init/myprogram.conf
.
Si votre script nécessite plusieurs lignes de commande, utilisez la script
section au lieu de la exec
ligne:
# myprogram.conf
start on filesystem
script
/usr/bin/java -jar /path_to/program
echo "Another command"
end script
Pour activer l'achèvement de bash pour votre service, ajoutez un lien symbolique dans le /etc/init.d
dossier:
sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
Essayez ensuite de démarrer et d'arrêter:
sudo service myprogram start
Selon le livre de recettes upstart , vous pouvez créer des commandes pre-start
/ post-start
et pre-stop
/ post-stop
à exécuter.
De plus, j'ai lu que vous souhaitez vérifier si un processus est en cours d'exécution. Cochez cette question et utilisez peut-être la pre-start
section.
sudo chmod +x /etc/init.d/myprogram
. ATTENTION: votre méthode répondue ne fonctionne pas dans Ubuntu 16.04!
Vous devez créer un parvenu. http://upstart.ubuntu.com/getting-started.html
Upstart est (à mon humble avis) un désastre par rapport aux bons anciens scripts d'initialisation SysV. Upstart est BEAUCOUP plus d'efforts avec peu d'avantages au travail supplémentaire. Cela dit, je soupçonne qu'il y aura quelques défenseurs arrivistes là-bas qui me prendront à partie pour me dire l'évidence ;-)