Я пишу системный монитор для Linux и хочу включить некоторые функции сторожевого таймера. В ядре вы можете настроить сторожевой таймер, чтобы он продолжал работать, даже если / dev / watchdog закрыт. Другими словами, если мой демон нормально завершится и закроет / dev / watchdog, система все равно перезагрузится через 59 секунд. Это может быть, а может и не быть желательным для пользователя.
Мне нужно, чтобы мой демон знал об этом параметре, потому что он будет влиять на то, как я буду обрабатывать SIGINT. Если этот параметр включен, моему демону потребуется (предпочтительно) запустить упорядоченное завершение работы при выходе или (по крайней мере) предупредить пользователя о том, что система вскоре перезагрузится.
Кто-нибудь знает способ получить этот параметр из пользовательского пространства? Я не вижу ничего в sysconf (), чтобы получить значение. Точно так же мне нужно быть в состоянии определить, включен ли сторожевой таймер программного обеспечения с самого начала.
Изменить:
Linux предоставляет очень простой сторожевой интерфейс. Процесс может открыть / dev / watchdog, после открытия устройства ядро начнет 60-секундный обратный отсчет до перезагрузки, если некоторые данные не будут записаны в этот файл, и в этом случае часы переустановятся.
В зависимости от того, как настроено ядро, закрытие этого файла может остановить или не остановить обратный отсчет. Из документации:
Сторожевой таймер можно остановить без перезагрузки, если устройство / dev / watchdog закрыто правильно, если только ваше ядро не скомпилировано с включенной опцией CONFIG_WATCHDOG_NOWAYOUT.
Мне нужно знать, установлен ли CONFIG_WATCHDOG_NOWAYOUT из демона пользовательского пространства, чтобы я мог по-другому обработать завершение работы этого демона. Другими словами, если этот параметр высокий, просто:
# /etc/init.d/mydaemon stop
... перезагрузит систему через 59 секунд, потому что в / dev / watchdog больше ничего не записывается. Итак, если он установлен высоким, мой обработчик SIGINT должен делать дополнительные вещи (то есть, по крайней мере, предупреждать пользователя).
Я не могу найти способ получить эту настройку из пользовательского пространства :( Любая помощь приветствуется.