GNU/Linux >> Tutoriales Linux >  >> Linux

Desde el espacio de usuario, ¿cómo puedo saber si el perro guardián suave de Linux está configurado sin salida?

¡Ajá! Después de buscar en el linux/watchdog.h del núcleo y drivers/watchdog/softdog.c , pude determinar las capacidades del softdog ioctl() interfaz. Mirando las capacidades que anuncia en struct watchdog_info :

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

Lo admitir un cierre mágico que (parece) anular CONFIG_WATCHDOG_NOWAYOUT . Entonces, cuando termino normalmente, tengo que escribir un solo carácter 'V' en /dev/watchdog entonces ciérralo y el temporizador dejará de contar.

Un simple ioctl() en un descriptor de archivo a /dev/watchdog preguntando WDIOC_GETSUPPORT permite determinar si esta bandera está activada. Pseudocódigo:

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

Cuando trabaje con guardianes de hardware, es posible que desee abrir con O_NONBLOCK entonces ioctl() no open() bloques (por lo tanto, detectando una tarjeta ocupada).

Si WDIOF_MAGICCLOSE no es compatible, uno debe asumir que el perro guardián suave está configurado con NOWAYOUT. Recuerda, solo abrir el dispositivo inicia con éxito la cuenta regresiva. Si todo lo que está haciendo es sondear para ver si admite el cierre mágico y lo hace, entonces cierre mágico . De lo contrario, asegúrese de lidiar con el hecho de que ahora tiene un perro guardián en ejecución.

Desafortunadamente, no hay una forma real de saberlo con certeza sin iniciarlo, al menos no que yo haya podido encontrar.


un perro guardián protege contra el bloqueo del sistema, ya sea debido a un bloqueo del software o una falla del hardware.

lo que necesita es un demonio de monitoreo de demonios (dmd). comprobar 'monitoreo'


Linux
  1. Cómo distinguir binarios de archivos de texto en Linux

  2. ¿Cómo puedo saber en Linux qué proceso envió una señal a mi proceso?

  3. ¿Cómo puedo hacer una división con variables en un shell de Linux?

  4. ¿Cómo puedo eliminar Jenkins por completo de Linux?

  5. ¿Cómo puedo saber si un sistema Linux usa Wayland o X11?

Cómo monitorear la conexión WiFi con Wavemon desde la línea de comandos en Linux

Cómo compartir archivos de forma segura desde la línea de comandos con ffsend en Linux

Cómo averiguar la dirección IP pública desde la línea de comandos en Linux

¿Cómo puedo saber qué versión de Linux estoy usando?

¿Cómo puedo migrar una instalación de Linux de HDD a SSD?

¿Cómo puedo usar rsync con un sistema de archivos FAT?