GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich im Userspace feststellen, ob der Soft-Watchdog von Linux ohne Ausweg konfiguriert ist?

AHA! Nach dem Durchstöbern von linux/watchdog.h des Kernels und drivers/watchdog/softdog.c konnte ich die Fähigkeiten des Softdogs ioctl() ermitteln Schnittstelle. Betrachten wir die Fähigkeiten, die es in struct watchdog_info ankündigt :

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

Es tut unterstützt ein magisches Schließen, das (scheint) CONFIG_WATCHDOG_NOWAYOUT überschreibt . Wenn ich also normal terminiere, muss ich ein einzelnes Zeichen 'V' in /dev/watchdog schreiben dann Schließen Sie es und der Timer hört auf zu zählen.

Eine einfache ioctl() auf einem Dateideskriptor zu /dev/watchdog fragt WDIOC_GETSUPPORT erlaubt einem festzustellen, ob dieses Flag gesetzt ist. Pseudocode:

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.
}

Wenn Sie mit Hardware-Watchdogs arbeiten, möchten Sie vielleicht mit O_NONBLOCK öffnen also ioctl() nicht open() blockiert (wodurch eine belegte Karte erkannt wird).

Wenn WDIOF_MAGICCLOSE nicht unterstützt wird, sollte man einfach davon ausgehen, dass der Softwatchdog mit NOWAYOUT konfiguriert ist. Denken Sie daran, nur öffnen Das Gerät startet den Countdown erfolgreich. Wenn Sie nur prüfen, ob Magic Close unterstützt wird und dies der Fall ist, dann Magic Close . Andernfalls sollten Sie sich unbedingt damit auseinandersetzen, dass Sie jetzt einen laufenden Watchdog haben.

Leider gibt es keinen wirklichen Weg, es sicher zu wissen, ohne es tatsächlich zu starten, zumindest nicht, dass ich es finden könnte.


ein Watchdog verhindert, dass das System hart gesperrt wird, entweder aufgrund eines Software-Absturzes oder eines Hardware-Fehlers.

Was Sie brauchen, ist ein Daemon Monitoring Daemon (dmd). überprüfen Sie 'Überwachung'


Linux
  1. Wie kann man unter Linux Binärdateien von Textdateien unterscheiden?

  2. Wie kann ich unter Linux feststellen, welcher Prozess meinem Prozess ein Signal gesendet hat?

  3. Wie kann ich eine Division mit Variablen in einer Linux-Shell durchführen?

  4. Wie extrahiert man Text mit OCR aus einem PDF unter Linux?

  5. Wie kann ich Dateien mit xargs unter Linux verschieben?

So überwachen Sie die WLAN-Verbindung mit Wavemon von der Befehlszeile in Linux

So teilen Sie Dateien sicher über die Befehlszeile mit ffsend in Linux

So finden Sie die öffentliche IP-Adresse über die Befehlszeile unter Linux heraus

Wie teile ich das Internet mit Windows von meiner Linux-Box aus?

Wie kann ich eine Linux-Installation von HDD auf SSD migrieren?

Wie kann ich rsync mit einem FAT-Dateisystem verwenden?