Сторожевой таймер для одного процесса [Linux]

Мне нужно убедиться, что выбранный процесс не завис. Я думал, что запрограммирую этот процесс на запись в какой-нибудь файл /proc, который будет периодически контролироваться каким-то другим процессом/модулем. Если какое-то время в файле не будет изменений, приложение будет считаться зависшим. Так же, как сторожевой пес в UC.

Однако я не знаю, лучший ли это подход. Так как я не сильно разбираюсь в глубоком проектировании Linux, я подумал, что лучше спросить, какой способ самый простой, прежде чем начинать изучать написание модулей, файловую систему /proc и т. д. Ха!

Я нашел некоторую информацию о Monit (https://mmonit.com/monit/). Может быть, это будет лучше?

Что бы вы порекомендовали, чтобы лучше всего реализовать здесь функциональность «сторожевого таймера»?

Большое спасибо!

Павел


person Paweł J    schedule 07.12.2016    source источник
comment
Какую систему инициализации используете?   -  person Frank Meerkötter    schedule 07.12.2016
comment
Я использую BusyBox init, который не поддерживает уровни выполнения. У меня нет записей /etc/rc*, но я запускаю сценарии init.d. Это ответ на ваш вопрос, @FrankMeerkötter, но Фелипе Лавратти уже помог мне найти решение. Спасибо!   -  person Paweł J    schedule 09.12.2016


Ответы (1)


Независимым от ОС решением является создание потока сторожевого таймера, который запускается периодически и поддерживает один или несколько программных сторожевых таймеров, которые просто реализуются как биты состояния или байты. Рассматриваемый процесс отвечает за поглаживание сторожевого таймера (очистку статуса). Поток сторожевого таймера представляет собой цикл, который проверяет состояние. Если он был очищен, он устанавливает его. Если он не был очищен, он подает сигнал тревоги. Вы можете настроить время так, чтобы статус не проверялся каждый раз в цикле.

Это решение достаточно гибкое. Вы также можете привязать его к аппаратному сторожевому таймеру, проверяя аппаратный сторожевой таймер только в том случае, если все программные сторожевые таймеры были проверены.

person Bruce    schedule 08.12.2016