Comment créer un service sur Ubuntu Upstart


21

J'ai un programme exécutable Java que je peux exécuter en tapant java -jar abc.jarterminal. 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.


Une réponse plus complète est ici: unix.stackexchange.com/questions/1924/… Fondamentalement, dans Ubuntu, vous pouvez créer un script pour /etc/init.d qui peut démarrer / arrêter / redémarrer votre service.
M. Ed

Réponses:


41

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 scriptsection au lieu de la execligne:

# 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.ddossier:

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-startet 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-startsection.


1
Peut-être que vous devez le rendre exécutable avec sudo chmod +x /etc/init.d/myprogram. ATTENTION: votre méthode répondue ne fonctionne pas dans Ubuntu 16.04!
juliocesar

2
@juliocesar 16.04 utilise systemd, pas Upstart.
Rael Gugelmin Cunha

start onn'est pas une strophe nécessaire. Comme vous pouvez le lire ici : Un tel travail ne peut être contrôlé que par un administrateur .
SuB

@SuB yeap, mais le travail ne démarrera pas automatiquement, et il était clair que l'auteur de la question voulait que quelque chose agisse comme un service, c'est-à-dire qu'il démarre automatiquement.
Rael Gugelmin Cunha

Oui. Je sais. vient d'ajouter un commentaire pour compléter votre réponse.
SuB

0

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 ;-)


1
C'est juste un fichier dans /etc/init/yourservice.conf avec une ligne indiquant quand démarrer et un autre pour la commande exec. Fedora utilise aussi le parvenu. De plus, même Debian change son schéma de démarrage en SystemD, qui sera le schéma Ubuntu à l'avenir.
Rael Gugelmin Cunha
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.