Watchdog: различия между версиями

Материал из Wiren Board
Строка 27: Строка 27:
<!--T:4-->
<!--T:4-->
На иллюстрациях показано, какие выводы необходимо соединить для этого в контроллерах Wiren Board 5 и WirenBoard 6. Нужный вывод разъема ON/OFF отмечен красной стрелкой, выводы GND (можно использовать любой) отмечены красными кружками. Фиолетовой линией показан пример соединения.
На иллюстрациях показано, какие выводы необходимо соединить для этого в контроллерах Wiren Board 5 и WirenBoard 6. Нужный вывод разъема ON/OFF отмечен красной стрелкой, выводы GND (можно использовать любой) отмечены красными кружками. Фиолетовой линией показан пример соединения.
В версии Wiren Board 6.9 нет простого способа аппартно отключить сторожевой таймер.


===Отключение сторожевого таймера программным способом===
===Отключение сторожевого таймера программным способом===

Версия 11:26, 1 декабря 2021

Другие языки:

Сторожевой таймер (англ. watchdog) — аппаратно реализованная схема контроля за зависанием системы.

Представляет собой отдельную микросхему-компаратор, ведущую отсчёт времени. Если таймер досчитывает до заданного времени (около 15 секунд), происходит перезагрузка по питанию (выключение одной из линий питания на 3-4 секунды). В нормальном режиме таймер периодически сбрасывается подачей переменного сигнала, подаваемого на вход таймера с одного из выводов GPIO процессора. Этот GPIO контролируется специальным сервисом Linux watchdog. Интерфейс сторожевого таймера /dev/watchdog1, конфигурация сервиса хранится в файле /etc/watchdog.conf.

Отключение сторожевого таймера

Сторожевой таймер иногда требуется отключить:

  1. Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) - если сторожевой таймер будет работать, то контроллер даже после команды halt через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера.
  2. Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.

Отключение сторожевого таймера аппаратным способом

Для отключения требуется разобрать корпус контроллера и соединить один из выводов разъема ON/OFF с GND.

Wiren Board 6.7-6.8
Wiren Board 6
Wiren Board 5

На иллюстрациях показано, какие выводы необходимо соединить для этого в контроллерах Wiren Board 5 и WirenBoard 6. Нужный вывод разъема ON/OFF отмечен красной стрелкой, выводы GND (можно использовать любой) отмечены красными кружками. Фиолетовой линией показан пример соединения.

В версии Wiren Board 6.9 нет простого способа аппартно отключить сторожевой таймер.

Отключение сторожевого таймера программным способом

Этим способом вы сможете только остановить циклическую перезагрузку из-за неправильной работы ПО. Добиться им полного выключения контроллера при наличии питания не получится.

Чтобы отключить сторожевой таймер, остановите его службу:

service watchdog stop

Но после перезагрузки контроллера служба сторожевого таймера запустится снова.

Если вы исправили ошибки в работе ПО и хотите запустить обратно сторожевой таймер без перезагрузки контроллера, выполните

service watchdog start

Если вы хотите навсегда отключить слежение сторожевого таймера за одним из сервисов, отредактируйте конфигурационный файл /etc/watchdog.conf, закомментировав строки соответствующих сервисов (в этом примере отключено слежение за nginх):

# Test if vital daemons are running
pidfile		= /var/run/syslogd.pid 
pidfile		= /var/run/sshd.pid
pidfile		= /var/run/mosquitto.pid
#pidfile		= /var/run/nginx.pid

а затем выполните

service watchdog restart