2016-12-07 1 views
0

Je dois m'assurer qu'un processus choisi n'est pas suspendu. J'ai pensé que je programmerais ce processus pour écrire dans un fichier/proc qui sera suivi périodiquement par un autre processus/module. S'il n'y a pas de changement dans le fichier pendant un certain temps, l'application sera considérée comme suspendue. Tout comme un chien de garde en uC.Watchdog pour un seul processus [Linux]

Cependant, je ne sais pas si c'est la meilleure approche. Comme je ne m'intéresse pas vraiment à l'ingénierie Linux profonde, j'ai pensé qu'il était préférable de se demander de quelle façon est la plus simple avant de commencer à apprendre les modules d'écriture, le système de fichiers/proc, etc. Ha!

J'ai trouvé des informations sur Monit (https://mmonit.com/monit/). Peut-être que ce serait mieux?

Que recommanderiez-vous pour être le meilleur moyen d'implémenter la fonctionnalité "chien de garde" ici?

Merci beaucoup!

Paweł

+0

Quels systèmes d'initialisation utilisent? –

+0

J'utilise BusyBox init, qui ne supporte pas les niveaux d'exécution. Je n'ai pas d'entrées/etc/rc *, mais j'exécute des scripts init.d. C'est pour répondre à votre question, @ FrankMeerkötter, mais Felipe Lavratti m'a aidé à trouver une solution. Merci! –

Répondre

1

Une solution OS indépendante est de créer un fil de chien de garde qui exécute périodiquement et prend en charge un ou plusieurs chiens de garde du logiciel, qui sont simplement mises en oeuvre en tant que bits d'état ou d'octets. Le processus en question est responsable de tapoter le chien de garde (effacement du statut). Le thread watchdog est une boucle qui vérifie l'état. S'il a été effacé, il le définit. Si elle n'a pas été effacée, elle déclenche une alarme. Vous pouvez ajuster le minutage de sorte que l'état ne soit pas vérifié à chaque fois dans la boucle.

Cette solution est assez flexible. Vous pouvez également l'attacher dans le chien de garde du matériel, en tapotant le chien de garde hw seulement si tous les chiens de garde du logiciel ont été tapotés.