Utiliser upstart avec stop instance inconnue

8

Je ne fais que commencer, j'ai donc écrit un script très basique juste pour imprimer dans un fichier journal appelé: vm-service.confque j'ai mis /etc/init:

description "Virtual Images"
author      "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn   


script
echo "DEBUG: `set`" >> /tmp/vm-service.log

end script


pre-stop script
    echo "DEBUG: `set`" >> /tmp/vm-service.log
end script

si je cours sudo start vm-service, il produit:

vm-service start/running, process 29034

Mais, quand je cours sudo stop vm-service, il produit:

stop: Unknown instance

J'ai essayé de courir sudo initctl reload-configuration, mais j'obtiens toujours l'erreur à l'arrêt.

J'ai regardé le livre de cuisine mais il me manque probablement quelque chose d'évident.

conseiller
la source

Réponses:

7

Upstart considérera que le travail est arrêté si le processus principal (ce qui est exécuté si le script ou les strophes d'exécution sont spécifiées) se termine. Upstart exécutera ensuite le processus de post-démarrage.

Donc, ce qui se passe, c'est que le premier script est en cours d'exécution et se termine, Upstart considère que le travail est arrêté, puis le deuxième script est en cours d'exécution et se termine. Si vous exécutez la commande d'arrêt sur un travail déjà arrêté, il imprime le message que vous avez vu.

Pour gérer cela, utilisez une strophe de pré-démarrage:

pre-start exec foo --bar

post-start exec baz --foo

si vous faites cela, Upstart verra le travail comme démarré une fois la strophe de pré-démarrage terminée, et non comme arrêté.

CameronNemo
la source