J'ai un script Python très simple que j'aimerais toujours exécuter sur mon serveur Ubuntu 12.04. J'ai pensé à utiliser upstart + monit. Le problème est que ces outils semblent plutôt compliqués pour un simple mortel comme moi, et je ne trouve pas d'exemple simple sur le web.
Est-ce que upstart + monit est exagéré? Quelqu'un connaît-il une alternative plus simple ou un bon tutoriel pour upstart + monit? Si je veux juste être sûr que le script est toujours en cours d'exécution, monit est-il requis?
python
upstart
monitoring
sebpiq
la source
la source
Réponses:
Le moyen le plus simple de le faire est de le placer dans
/etc/init/something.conf
:Respawn le redémarrera s'il est tué ou sort non nul (comme une exception non capturée). Cela fonctionnera depuis Ubuntu 10.04.
Si vous avez 12.04, vous pouvez devenir plus sophistiqué. Ce qui précède exécutera votre script en tant que root. Dans 12.04, vous pouvez ajouter setuid / setgid:
Si votre script se termine alors qu'il n'y a pas de réseau disponible et que vous prévoyez de l'exécuter sur une connexion réseau instable, vous devez le corriger et le faire rester en vie / réessayer. Mais si vous ne le pouvez pas, vous devrez peut-être également le faire démarrer manuellement chaque fois qu'un périphérique réseau apparaît. Vous pouvez donc le placer dans
/etc/network/if-up.d/yourscript
(le rendre exécutable avec chmod + x)Où votre script est juste quelque chose d'arbitraire et unique à ce script particulier, et "quelque chose" est le même que le nom du travail (tel que
/etc/init/something.conf
suggéré plus haut).la source
upstart
droite? Est-ce à dire que le script sera également lancé au démarrage (ce qui serait bien!)? Etrespawn
est-ce suffisant pour que vous n'ayez pas besoin de configurermonit
?L'approche habituelle de l'ancien temps était d'écrire un fichier contenant un horodatage ou l'ID de processus
/tmp
, puis de vérifier si cet ID de processus était toujours en cours d'exécution ou respectivement si l'horodatage était encore récent.Vous pouvez également faire un simple
while [ 1 ]; do phyton-script.ph; done
qui redémarrerait le script au cas où il reviendrait.Pour plus de possibilités, veuillez fournir plus d'informations sur votre script. Surtout pourquoi vous vous attendez à ce qu'il se ferme ou se bloque de manière inattendue.
la source