Я пишу системный монитор для Linux и хочу включить некоторые функции сторожевого таймера. В ядре вы можете настроить сторожевой таймер на продолжение, даже если/dev/watchdog закрыт. Другими словами, если мой демон нормально завершает работу и закрывает/dev/watchdog, система будет перезагружаться через 59 секунд. Это может или не может быть желательным для пользователя.Linux software watchdog
Мне нужно, чтобы мой демон знал об этой настройке, потому что это повлияет на то, как я обрабатываю SIGINT. Если настройка включена, моему демону необходимо (желательно) начать упорядоченное завершение при выходе или (по крайней мере) предупредить пользователя о том, что система скоро перезагрузится.
Кто-нибудь знает о способе получения этого параметра из пользовательского пространства? Я ничего не вижу в sysconf(), чтобы получить значение. Аналогичным образом, мне нужно знать, разрешено ли сторожевому таймеру программного обеспечения.
Edit:
Linux обеспечивает очень простой интерфейс сторожевого. Процесс может открыть/dev/watchdog, как только устройство будет открыто, ядро начнет отсчет 60 секунд до перезагрузки, если в этот файл не будут записаны некоторые данные, и в этом случае часы будут повторно установлены.
В зависимости от конфигурации ядра закрытие этого файла может остановить или не остановить обратный отсчет. Из документации:
Сторожевое может быть остановлено без вызывает перезагрузку, если устройство /DEV/сторожевой закрыт правильно, , если ваше ядро не компилируются с опцией CONFIG_WATCHDOG_NOWAYOUT включен.
мне нужно, чтобы быть в состоянии сказать, если CONFIG_WATCHDOG_NOWAYOUT был установлен внутри космического демона пользователя, так что я могу справиться отключение указанного демона по-разному. Другими словами, если эта настройка высока, простой:
# /etc/init.d/mydaemon stop
... будет перезагружать систему за 59 секунд, потому что ничего не пишет в/разработчика/сторожевого больше. Таким образом, если его набор высокий, мой обработчик для SIGINT должен делать дополнительные вещи (т. Е. Предупреждать пользователя как минимум).
я не могу найти способ получения этого параметра из пространства пользователя :(Любая помощь приветствуется.
Подробная информация о Magic Close и IOCTL в спецификации API подтверждают комментарии выше, но предоставляют больше подробностей фона. См. [This] (http://www.mjmwired.net/kernel/Documentation/watchdog/watchdog-api.txt), например. Сначала найдено [здесь] (http://stackoverflow.com/a/2020516/939250). –