web-dev-qa-db-fra.com

Upstart, une définition de travail à démarrer et une à arrêter

Bonjour, je viens de découvrir Ubuntu Upstart (scripts etc/init/*). Et je voudrais l'utiliser pour exécuter une application particulière. Cette application est exécutée via une ligne de commande, mais il existe un argument pour démarrer une instance de l'application et un autre argument pour l'arrêter (disons 'démarrer' et 'arrêter') Y a-t-il un moyen d'utiliser Upstart pour cela ??

7
benzen

Cela devrait être aussi simple que de créer un fichier /etc/init/myjob.conf:

description    "My Job"

# start conditions for automatic start
# stop conditions for automatic stop

pre-start exec /path/to/program start
post-stop exec /path/to/program stop

Vous devriez alors pouvoir faire Sudo start myjob pour démarrer et Sudo stop myjob pour arrêter.

Voir http://upstart.ubuntu.com pour plus d'informations.

7
htorque

Si tout ce que vous voulez faire est de démarrer/arrêter le service au démarrage ... alors déposez votre script dans /etc/init.d et exécutez

update-rc.d yourscript defaults

Ou si cela se plaint

update-rc.d yourscript start 20 2
update-rc.d yourscript stop 20 0
update-rc.d yourscript stop 20 1
update-rc.d yourscript stop 20 6

Ce qui l’ajoute au démarrage/à l’arrêt.

Notez que cela signifie qu’il s’exécutera en tant que root. Vous devez donc vous assurer que le script bascule les utilisateurs vers votre utilisateur ou avec un autre utilisateur sous lequel vous souhaitez exécuter ce programme.

Upstart est censé remplacer ces scripts dans la mesure du possible. Les motivations pour cela sont un démarrage plus rapide et un codage plus clair des informations nécessaires pour savoir quand démarrer/arrêter un service. Cela permet d’amorcer plus rapidement, plus simplement en lisant le contenu de/etc/init pour commencer, ce qui est particulièrement bénéfique lorsque vous ajoutez ureadahead au processus de démarrage, car les fichiers de script minuscules moins aléatoires que ureadahead doit mettre en cache sont d'autant plus utiles. il peut passer du temps à des tâches importantes telles que les bibliothèques et les programmes nécessaires au démarrage du système.

Je parie que le script que vous exécutez fait quelques choses pour configurer l'environnement, puis exécute le programme en mode démonisé. Votre travail en amont doit chercher à remplacer la logique du script, pas seulement à l'exécuter.

1
SpamapS

J'imagine que vous souhaiterez qu'il démarre ou qu'il s'arrête sur différents événements, il sera donc plus facile de configurer deux tâches différentes.

Si les mêmes événements modifient votre application, vous pouvez configurer un travail avec un script qui vérifie si elle est en cours d'exécution ou non, et par conséquent démarre ou arrête votre application.

0
luri