Estoy escribiendo un monitor de sistema para Linux y quiero incluir algunas funciones de vigilancia. En el kernel, puede configurar el watchdog para continuar incluso si/dev/watchdog está cerrado. En otras palabras, si mi daemon sale normalmente y cierra/dev/watchdog, el sistema seguirá reiniciando 59 segundos más tarde. Ese puede o no ser un comportamiento deseable para el usuario.Software de vigilancia de Linux
Necesito hacer que mi daemon tenga en cuenta esta configuración porque influirá en cómo manejo SIGINT. Si la configuración está activada, mi daemon debería (preferiblemente) iniciar un apagado ordenado al salir o (al menos) advertir al usuario que el sistema se reiniciará en breve.
¿Alguien sabe de un método para obtener esta configuración del espacio de usuario? No veo nada en sysconf() para obtener el valor. Del mismo modo, necesito poder decir si el software watchdog está habilitado para comenzar.
Editar:
Linux proporciona una interfaz muy simple de vigilancia. Un proceso puede abrir/dev/watchdog, una vez que se abre el dispositivo, el núcleo comenzará una cuenta regresiva de 60 segundos para reiniciar a menos que se escriban algunos datos en ese archivo, en cuyo caso el reloj se restablece.
Dependiendo de cómo esté configurado el kernel, cerrar ese archivo puede o no detener la cuenta regresiva. A partir de la documentación:
El organismo de control puede ser detenido sin provocando un reinicio si el dispositivo /dev/organismo de control se cierra correctamente, a menos que su núcleo está compilado con la opción CONFIG_WATCHDOG_NOWAYOUT habilitado.
tengo que ser capaz de decir si CONFIG_WATCHDOG_NOWAYOUT se estableció desde el interior de un espacio demonio de usuario, por lo que puedo manejar el cierre de dicho demonio de manera diferente. En otras palabras, si ese valor es alto, un simple:
# /etc/init.d/mydaemon stop
... sería reiniciar el sistema en 59 segundos, porque nada está escribiendo en/dev/guardián por más tiempo. Entonces, si está configurado como alto, mi controlador para SIGINT necesita hacer cosas adicionales (es decir, advertir al usuario como mínimo).
No puedo encontrar una manera de obtener esta configuración desde el espacio de usuario :(Cualquier ayuda se agradece.
Los detalles de Magic Close y IOCTL en la especificación API confirman los comentarios anteriores, pero brindan más detalles sobre el fondo. Ver [esto] (http://www.mjmwired.net/kernel/Documentation/watchdog/watchdog-api.txt) por ejemplo. Primero encontrado [aquí] (http://stackoverflow.com/a/2020516/939250). –