GNU/Linux >> Tutoriels Linux >  >> Linux

À partir de l'espace utilisateur, comment puis-je savoir si le chien de garde logiciel de Linux est configuré sans issue ?

AHA ! Après avoir fouillé dans le linux/watchdog.h du noyau et drivers/watchdog/softdog.c , j'ai pu déterminer les capacités du softdog ioctl() interface. En regardant les capacités qu'il annonce dans struct watchdog_info :

static struct watchdog_info ident = {
                .options =              WDIOF_SETTIMEOUT |
                                        WDIOF_KEEPALIVEPING |
                                        WDIOF_MAGICCLOSE,
                .firmware_version =     0,
                .identity =             "Software Watchdog",
        };

Il fait prend en charge une fermeture magique qui (semble) remplacer CONFIG_WATCHDOG_NOWAYOUT . Donc, lors de la terminaison normale, je dois écrire un seul caractère 'V' à /dev/watchdog alors fermez-le et le chronomètre arrêtera de compter.

Un simple ioctl() sur un descripteur de fichier à /dev/watchdog demander WDIOC_GETSUPPORT permet de déterminer si ce drapeau est activé. Pseudo-code :

int fd;
struct watchdog_info info;

fd = open("/dev/watchdog", O_WRONLY);
if (fd == -1) {
   perror("open");
   // abort, timer did not start - no additional concerns
}

if (ioctl(fd, WDIOC_GETSUPPORT, &info)) {
    perror("ioctl");
    // abort, but you probably started the timer! See below.
}

if (WDIOF_MAGICCLOSE & info.options) {
   printf("Watchdog supports magic close char\n");
   // You have started the timer here! Handle that appropriately.
}

Lorsque vous travaillez avec des chiens de garde matériels, vous voudrez peut-être ouvrir avec O_NONBLOCK donc ioctl() pas open() blocs (donc détection d'une carte occupée).

Si WDIOF_MAGICCLOSE n'est pas pris en charge, il faut simplement supposer que le chien de garde logiciel est configuré avec NOWAYOUT. Rappelez-vous, il suffit d'ouvrir l'appareil démarre avec succès le compte à rebours. Si tout ce que vous faites est de sonder pour voir s'il prend en charge la fermeture magique et c'est le cas, alors la fermeture magique . Sinon, assurez-vous de gérer le fait que vous avez maintenant un chien de garde en cours d'exécution.

Malheureusement, il n'y a pas vraiment de moyen de savoir avec certitude sans le démarrer, du moins pas que j'ai pu trouver.


un chien de garde protège contre le verrouillage dur du système, soit en raison d'un plantage logiciel, soit d'une panne matérielle.

ce dont vous avez besoin est un démon de surveillance démon (dmd). vérifier 'surveiller'


Linux
  1. Comment envoyer un e-mail avec pièce jointe et corps à partir de Linux

  2. Comment distinguer le binaire des fichiers texte sous Linux

  3. Comment puis-je savoir sous Linux quel processus a envoyé un signal à mon processus

  4. Comment puis-je faire une division avec des variables dans un shell Linux ?

  5. Comment puis-je supprimer complètement Jenkins de Linux

Comment surveiller la connexion WiFi avec Wavemon à partir de la ligne de commande sous Linux

Comment partager en toute sécurité des fichiers à partir de la ligne de commande avec ffsend sous Linux

Comment trouver une adresse IP publique à partir de la ligne de commande sous Linux

Comment puis-je déplacer des fichiers avec xargs sous Linux ?

Comment puis-je copier un dossier à partir de la ligne de commande Linux ?

Comment puis-je utiliser rsync avec un système de fichiers FAT ?