В ядре Linux, более новом, чем 4.9, у вас должна быть доступная структура регулятора pretimeout, которая позволит вам написать драйвер ядра linux, который будет реагировать на обнаружение pre-timeout. Такое решение выходит за рамки простого вопроса и ответа, поэтому я оставляю свой первоначальный ответ на вопрос.
TL; DR:
Если проблема обнаружена во время работы ОС, вы можете очистить журналы. Если проблема вызвана блокировкой ОС, у вас не будет возможности устранить проблему, поскольку аппаратное обеспечение сбросит флажок.
Здесь есть две вещи:
- сторожевое устройство
- сторожевая программа
Устройство сторожевого таймера, как правило, представляет собой аппаратный таймер, который выполняет «что-то особенное низкое значение», когда истекает его таймер. Наиболее распространенная вещь низкого уровня - сбросить окно. В этом нет участия ОС, если это происходит на аппаратном уровне. У вас не будет возможности сделать что-либо на высоком уровне после того, как закончится таймер - например, где-то записывать лог-файлы.
Программа сторожевого таймера - это инструмент, который периодически заверяет сторожевое устройство, пока выполняются условия его проверки.
Условие сторожевого таймера busybox представляет собой простой цикл (псевдокод):
while (1) {
# reassure watchdog
# sleep some time
}
так, если программа перестает работать - например, из-за блокировки ОС или завершения работы программы аппаратное обеспечение просто отключится.
«Большой» двоичный сторожевой таймер предоставляет набор проверок, и, если они не пройдут, он включит опцию repair-binary
в /etc/watchdog.conf
, чтобы попытаться восстановиться. Это было бы потенциальной точкой для очистки журналов.