Je souhaite créer pour déployer un service Heartbeat (un script python) en tant que service utilisant Upstart.
Si j'ai bien compris, je dois ajouter un /etc/init/myheartbeatservice.conf
avec le contenu suivant.
# my heartbeat service
description "Heartbeat monitor"
start on startup
stop on shutdown
script
exec /path/to/my/python/script.py
end script
Mon script démarre un autre processus de service. Il surveille les processus et envoie régulièrement des pulsations à un serveur externe. Les événements startup
et shutdown
sont-ils corrects? Aussi mon script crée un nouveau fil. Je suppose que je dois aussi ajouter fork daemon
à mon fichier de configuration?
Merci.
startup
est l'événement que upstart émet au tout début de son exécution. Pour la plupart des services, c'est beaucoup trop tôt. Choses que vous pourriez ne pas avoir en ce moment:
shutdown
n'est en réalité pas un événement, bien qu'il ait été discuté en tant que tel à utiliser pour les versions futures.
Pour le moment, votre meilleur choix est de vous en tenir à l'ancienne méthode Unix et d'utiliser des niveaux d'exécution pour contrôler le moment du démarrage et de l'arrêt.
start on runlevel [2345]
stop on runlevel [^2345]
Les niveaux d'exécution sont l'ancienne méthode unix d'identification de l'état du système. [2345] n'est qu'un ensemble de tous les niveaux d'exécution utilisés pour le mode "Plusieurs utilisateurs", ce qui, même sur un ordinateur portable, signifie que le système fonctionne normalement. Si vous utilisez cela, vous pouvez compter sur des éléments tels que le système de fichiers et sur la mise en réseau statique. 99% de tous les travaux en démarrage doivent utiliser ces deux conditions de démarrage/d'arrêt.
Lorsque l’arrêt est activé, si le système entre dans un niveau d’exécution qui est non 2,3,4, ou 5, l’arrêté arrêtera le service. Le niveau d'exécution 0 correspond à l'arrêt et 1 à "mode de maintenance du système". 6 est pour rebot.
Nous finirons par ajouter de meilleurs noms pour ces abstractions, mais cela fonctionnera toujours.
De plus, vous n'avez pas besoin de script
ou end script
ici. Le mot clé exec
exécutera simplement votre programme directement. Cela vous fera gagner quelques millisecondes car vous n’aurez pas à exécuter/bin/sh et à analyser la ligne exec ...
, car upstart aura déjà analysé le fichier de travail.