web-dev-qa-db-fra.com

Comment créer un service sur Ubuntu Upstart

J'ai un programme exécutable Java que je peux exécuter en tapant Java -jar abc.jar dans le terminal. Comment puis-je l'exécuter en tant que service? Je veux l'exécuter en tant que service, par exemple en tapant service abc start.

21
mecek

Assurez-vous que vous êtes sur 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 commencer 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 section script à la place de la ligne exec:

# 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 dossier /etc/init.d:

Sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram

Ensuite, essayez de démarrer et d'arrêter:

Sudo service myprogram start

Selon le livre de recettes mis à jour , vous pouvez créer les commandes pre-start/post-start et pre-stop/post-stop.

De plus, je lis que vous voulez vérifier si un processus est en cours d'exécution. Vérifiez cette question et utilisez peut-être la section pre-start.

41

Vous devez créer un parvenu. http://upstart.ubuntu.com/getting-started.html

Upstart est (IMHO) un désastre comparé aux bons vieux scripts SysV init. Upstart est beaucoup plus d'effort avec peu d'avantages pour le travail supplémentaire. Cela dit, je pense qu’il y aura quelques défenseurs rapides qui me prendront au dépourvu pour que ce soit évident ;-)

0
Andrew