GNU/Linux >> Linux Esercitazione >  >> Linux

Dallo spazio utente, come posso sapere se il soft watchdog di Linux è configurato senza via d'uscita?

AHA! Dopo aver scavato nel linux/watchdog.h del kernel e drivers/watchdog/softdog.c , sono stato in grado di determinare le capacità del softdog ioctl() interfaccia. Guardando le capacità che annuncia in struct watchdog_info :

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

supporta una chiusura magica che (sembra) sovrascrivere CONFIG_WATCHDOG_NOWAYOUT . Quindi, quando si termina normalmente, devo scrivere un singolo carattere 'V' in /dev/watchdog allora chiudilo e il timer smetterà di contare.

Un semplice ioctl() su un descrittore di file a /dev/watchdog chiedendo WDIOC_GETSUPPORT consente di determinare se questo flag è impostato. Pseudo codice:

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

Quando lavori con watchdog hardware, potresti voler aprire con O_NONBLOCK quindi ioctl() non open() blocchi (rilevando quindi una carta occupata).

Se WDIOF_MAGICCLOSE non è supportato, si dovrebbe semplicemente supporre che il soft watchdog sia configurato con NOWAYOUT. Ricorda, solo apertura il dispositivo avvia correttamente il conto alla rovescia. Se tutto ciò che stai facendo è sondare per vedere se supporta la chiusura magica e lo fa, allora la chiusura magica . Altrimenti, assicurati di affrontare il fatto che ora hai un cane da guardia in esecuzione.

Sfortunatamente, non c'è un vero modo per saperlo con certezza senza avviarlo effettivamente, almeno non quello che sono riuscito a trovare.


un watchdog protegge dal blocco hardware del sistema, a causa di un arresto anomalo del software o di un guasto hardware.

ciò di cui hai bisogno è un demone che monitora il demone (dmd). controlla 'monito'


Linux
  1. Come distinguere il binario dai file di testo in Linux

  2. Come posso sapere in Linux quale processo ha inviato un segnale al mio processo

  3. Come posso scoprire se un sistema Linux utilizza Wayland o X11?

  4. Come estraggo la mia chiave Windows 8+ incorporata da un ambiente Linux?

  5. Come posso copiare una cartella dalla riga di comando di Linux?

Come monitorare la connessione WiFi con Wavemon dalla riga di comando in Linux

Come condividere in modo sicuro i file dalla riga di comando con ffsend in Linux

Come scoprire l'indirizzo IP pubblico dalla riga di comando su Linux

Come estrarre il testo con OCR da un PDF su Linux?

Come posso spostare i file con xargs su Linux?

Come posso migrare un'installazione Linux da HDD a SSD?