OS: Ubuntu 12.04
Tâche: exécuter le script dans certaines conditions de démarrage/d'arrêt. Aucun service/démon de longue durée n'est lancé, seulement des actions à court terme.
Script par défaut test.conf:
description "test script"
start on local-filesystems or runlevel [2345]
stop on runlevel [!2345]
task
pre-start exec /full/path/to/script.sh start
pre-stop exec /full/path/to/script.sh stop
Problèmes:
La tâche initiale peut-elle être résolue à l’aide de scripts d’arrêt?
Merci.
Mise à jour. "Le fait que votre script.sh ait à la fois des actions de démarrage et d'arrêt, ce qui suggère un démon de longue durée"
Aucune contradiction. Il existe des actions de démarrage et de nettoyage, sans processus intermédiaires de longue durée.
Lorsque j'ajoute la strophe 'exec', c'est-à-dire.
exec /full/path/to/script.sh idle
le résultat est le suivant:
$ start test
test stop/waiting
$ status test
test stop/waiting
$ stop test
stop: Unknown instance:
Correction: Le script mentionné dans les strophes est exécuté avec les paramètres "start" et "inactif", mais pas avec "stop".
Votre fichier de configuration par défaut ne comporte pas de section exec
ou script
et vous semblez vouloir commencer uniquement avec la commande de pré-démarrage, ce qui n’est pas correct. Selon la documentation de départ ( http://upstart.ubuntu.com/getting-started.html ):
Tous les fichiers de travail doivent comporter une strophe exec ou script. Ceci spécifie ce qui sera exécuté pour le travail.
Du code Shell supplémentaire peut être donné pour être exécuté avant ou après le binaire ou le script spécifié avec exec ou le script. On ne s'attend pas à ce qu'ils commencent le processus, en fait, ils ne peuvent pas. Ils sont destinés à la préparation de l'environnement et au nettoyage ultérieur.
De plus, ce que votre tâche d'origine demande ("Aucun service/démon de longue durée n'est lancé, seules des actions à court terme.") Semble contredire le fait que votre script.sh
possède à la fois start
et stop
_ actions qui fait suggérer un démon de longue durée.
description "test script"
start on local-filesystems or runlevel [2345]
stop on runlevel [!2345]
task
# Assuming script.sh start starts, performs a process, and then exits,
# this should work
exec /full/path/to/script.sh start
# No need for a pre-stop
Le document que j'ai lié à l'ouvrage est supposé être obsolète, vous pouvez aussi consulter http://upstart.ubuntu.com/cookbook/ qui est une bonne référence et contient des exemples utiles, je vous suggère donc lisez-le si les choses ne sont pas encore claires.