Logiciel de surveillance Linux
Je suis en train d'écrire un moniteur système pour Linux et que vous souhaitez inclure certains de surveillance de la fonctionnalité. Dans le noyau, vous pouvez configurer le chien de garde de continuer même si /dev/chien de garde est fermé. En d'autres termes, si mon démon sort normalement et se ferme /dev/watchdog, le système serait encore re-boot 59 secondes plus tard. Qui peut ou peut ne pas être souhaitable comportement de l'utilisateur.
J'ai besoin de faire mon démon conscient de ce paramètre, car il va influencer la façon dont je gère SIGINT. Si le réglage est sur, mon démon peut (de préférence) démarrer un arrêt à la sortie ou (au moins) d'avertir l'utilisateur que le système va redémarrer peu de temps.
Personne ne sait d'une méthode pour obtenir ce paramètre à partir de l'espace utilisateur? Je ne vois rien dans sysconf() pour obtenir la valeur. De même, j'ai besoin d'être en mesure de dire si le logiciel de surveillance est activé pour commencer.
Edit:
Linux fournit un très simple chien de garde de l'interface. Un processus peut ouvrir /dev/chien de garde , une fois que l'appareil est ouvert, le noyau commencera à 60 secondes compte à rebours jusqu'à redémarrer, à moins que des données sont écrites dans ce fichier, auquel cas l'horloge re-ensembles.
En fonction de la façon dont le noyau est configuré, la fermeture de ce fichier peut ou ne peut pas arrêter le compte à rebours. À partir de la documentation:
Le chien de garde peut être arrêté sans
provoquant un redémarrage si l'appareil
/dev/chien de garde est fermé correctement,
à moins que votre noyau est compilé avec les
le CONFIG_WATCHDOG_NOWAYOUT option
activé.
J'ai besoin d'être en mesure de dire si CONFIG_WATCHDOG_NOWAYOUT a été définie à partir de l'intérieur d'un espace utilisateur démon, afin que je puisse gérer l'arrêt de ladite démon différemment. En d'autres termes, si un réglage est élevé, un simple:
# /etc/init.d/mydaemon stop
... serait de redémarrer le système en 59 secondes, parce que rien n'est écrit à /dev/chien de garde plus longtemps. Donc, si, de son haut, mon gestionnaire pour SIGINT besoins pour faire des choses (c'est à dire d'en avertir l'utilisateur à tout le moins).
Je ne peux pas trouver un moyen de l'obtention de ce paramètre à partir de l'espace utilisateur 🙁 Toute aide est appréciée.
source d'informationauteur Tim Post
Vous devez vous connecter pour publier un commentaire.
AHA! Après avoir creusé à travers le noyau de la
linux/watchdog.h
etdrivers/watchdog/softdog.c
j'ai été en mesure de déterminer les capacités de la softdogioctl()
interface. En regardant les capacités qu'il annonce dansstruct watchdog_info
:Il ne soutenir une magie de proximité qui (semble) remplacer
CONFIG_WATCHDOG_NOWAYOUT
. Ainsi, lors de la résiliation normalement, je dois écrire un seul char " V " à/dev/watchdog
puis la fermer, et la minuterie s'arrête le comptage.Un simple
ioctl()
sur un descripteur de fichier pour/dev/watchdog
demandantWDIOC_GETSUPPORT
permet de déterminer si cette option est activée. Le Pseudo-code:Lorsque l'on travaille avec du matériel de surveillance, vous pouvez ouvrir avec
O_NONBLOCK
doncioctl()
pasopen()
blocs (donc la détection d'un occupé de la carte).Si
WDIOF_MAGICCLOSE
n'est pas pris en charge, faut-il supposer que le soft de surveillance est configuré avec NOWAYOUT. Rappelez-vous, juste ouverture l'appareil démarre avec succès le compte à rebours. Si tout ce que vous faites est de sonder pour voir si elle prend en charge la magie de près et c'est le cas, magie fermer. Sinon, assurez-vous de traiter avec le fait que vous avez maintenant une course de chien de garde.Malheureusement, il n'y a pas de véritable moyen de savoir pour sûr, sans réellement de départ, du moins pas que je pouvais trouver.
un chien de garde des gardes contre dur verrouillage du système, soit à cause d'un crash du logiciel, ou de défaillance du matériel.
ce que vous avez besoin est un démon démon de surveillance (dmd). cochez la case 'monit'
Je pense que le chien de garde des pilotes de périphérique sont vraiment prévu pour une utilisation sur les plateformes embarquées (ou moins bien maîtrisée) où les développeurs n'ont de contrôle dont le noyau est en cours d'utilisation.
Ce qui pourrait être considéré comme un oubli, mais je pense qu'il ne l'est pas.
Une autre chose que vous pouvez essayer, si le chien de garde a été construit en tant que module chargeable, le déchargement, il sera sans doute abandonner l'arrêt?