2017-10-16 7 views
0

J'utilise Raspberry PI pour automatiser mon appareil. J'ai besoin de mon application console (écrite en C++) sur Raspberry pour travailler sans humain pendant des années. J'ai donc mis en place un chien de garde pour redémarrer tous les jours, et lancer mon application en autorun.Redémarrage automatique de l'application console Linux

Mais mon application peut tomber en panne. Je ne peux pas révéler la cause, et j'ai besoin de le redémarrer rapidement. De quelle façon sera le meilleur? Peut-être que je pourrais écrire un "parent" -app, et appeler mon comme un fil dedans, et contrôler son fonctionnement (mais il pourrait planter aussi)? Ou peut-être existe-t-il un démon existant pour le faire? Ou peut-être quelqu'un sait, comment écrire l'application Phyton pour le faire, et l'exécuter au démarrage?

+0

Créez un service et laissez init.d s'occuper de lui. Il ne sert à rien d'écrire un wrapper pour essayer de le redémarrer quand ça existe déjà! – UKMonkey

Répondre

0

Pas nécessairement répondre à la question, mais je pense qu'une meilleure approche serait d'utiliser un utilitaire testé tel que "cron" pour planifier un redémarrage quotidien.

0

Garder un programme en cours d'exécution si elle est sujette à accident est assez facile, juste en utilisant un script shell:

while true; do /bin/my_app; done 

Cependant, cette approche globale ne sera pas d'aucune aide si l'application échoue d'une certaine façon court d'un processus d'arrêt. Une approche courante dans des situations comme celle-ci pour fournir à l'application un point d'accès externe (par exemple, un serveur HTTP) qui peut être sondé. Ensuite, un autre processus exerce la sonde à intervalles réguliers, et tue le programme s'il ne répond pas en temps opportun. Il existe des frameworks très sophistiqués pour ce genre de choses mais, encore une fois, de simples fonctionnalités de ce type peuvent être implémentées simplement avec des scripts shell.