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

Материал из Wiren Board
Строка 2: Строка 2:
<translate>
<translate>
<!--T:1-->
<!--T:1-->
{{DISPLAYTITLE: Watchdog в контроллерах Wiren Board 5, Wiren Board 6 и Wiren Board 7.2…7.3}}
{{DISPLAYTITLE: Watchdog в контроллерах Wiren Board}}
== Описание ==
== Wiren Board 7.4 ==
{{note|note| Здесь описываются контроллеры Wiren Board 5, Wiren Board 6 и Wiren Board 7.2…7.3. Описание сторожевого таймера в '''Wiren Board 7.4''' смотрите [[Wiren_Board_7.4#watchdog|в его документации]].}}
=== Как устроен ===
{{Wbincludes: Watchdog 7.4 How Does It Work}}
 
=== Отключение ===
[[Image: wb7.4-watchdog.jpg|thumb|right|Кнопка и перемычка отключения сторожевого таймера]]
 
Отключайте слежение за сервисами только в крайнем случае, например, если какой-то из сервисов не работает должным образом. После устранения причин, сторожевой таймер надо включить.
 
На контроллере есть физическая кнопка, которая эмулирует сигнал на сброс сторожевого таймера, находится она на плате и подписана как '''B1'''. Используйте её, если один из отслеживаемых сервисов зависает, или если вам нужно внести изменение в конфигурацию. Также есть перемычка '''Watchdog OFF''', замкнув её каплей припоя, можно отключить сторожевой таймер навсегда.
 
Watchdog следит за сервисами, указанными в файле <code>/etc/watchdog.conf</code> в разделе <code># Test if vital daemons are running</code>.
 
Вы можете добавить в него свой сервис или отредактировать заводской список:
# Разберите корпус контроллера.
# Нажмите кнопку '''B1''' и включите контроллер. Далее можете удерживать кнопку нажатой или нажимать её примерно раз в 20-30 секунд — так вы будете сбрасывать таймер.
# Остановите сервис командой <code>systemctl stop watchdog</code>.
# Измените список отслеживаемых сервисов в файле <code>/etc/watchdog.conf</code>.
# Запустите сервис командой <code>systemctl start watchdog</code>.
 
== Wiren Board 5, Wiren Board 6 и Wiren Board 7.2…7.3 ==
В контроллере два сторожевых таймера (англ. ''watchdog'') — аппаратный и программный.
В контроллере два сторожевых таймера (англ. ''watchdog'') — аппаратный и программный.


Строка 11: Строка 30:
Программный таймер выполнен в виде сервиса watchdog.
Программный таймер выполнен в виде сервиса watchdog.


==Отключение сторожевого таймера==
===Отключение сторожевого таймера===
Сторожевой таймер иногда требуется отключить:
Сторожевой таймер иногда требуется отключить:
# Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) — если сторожевой таймер будет работать, то контроллер даже после команды <code>halt</code> через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера.  
# Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) — если сторожевой таймер будет работать, то контроллер даже после команды <code>halt</code> через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера.  
# Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.
# Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.


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


<!--T:2-->
<!--T:2-->
Строка 37: Строка 56:
</gallery>
</gallery>


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



Версия 05:02, 31 июля 2023

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

Wiren Board 7.4

Как устроен

Wbincludes:Watchdog 7.4 How Does It Work

Отключение

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

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

На контроллере есть физическая кнопка, которая эмулирует сигнал на сброс сторожевого таймера, находится она на плате и подписана как B1. Используйте её, если один из отслеживаемых сервисов зависает, или если вам нужно внести изменение в конфигурацию. Также есть перемычка Watchdog OFF, замкнув её каплей припоя, можно отключить сторожевой таймер навсегда.

Watchdog следит за сервисами, указанными в файле /etc/watchdog.conf в разделе # Test if vital daemons are running.

Вы можете добавить в него свой сервис или отредактировать заводской список:

  1. Разберите корпус контроллера.
  2. Нажмите кнопку B1 и включите контроллер. Далее можете удерживать кнопку нажатой или нажимать её примерно раз в 20-30 секунд — так вы будете сбрасывать таймер.
  3. Остановите сервис командой systemctl stop watchdog.
  4. Измените список отслеживаемых сервисов в файле /etc/watchdog.conf.
  5. Запустите сервис командой systemctl start watchdog.

Wiren Board 5, Wiren Board 6 и Wiren Board 7.2…7.3

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

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

Программный таймер выполнен в виде сервиса watchdog.

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

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

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

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

Для отключения требуется разобрать корпус контроллера и:

  • в Wiern Board 7.2 — запаять перемычку Watchdog OFF;
  • в Wiren Board 6.9 нет простого способа аппаратно отключить сторожевой таймер;
  • в Wiren Board 6.8 — соединить контакт WD с +5V;
  • в Wiren Board 6.7 — соединить контакт WD с GND;
  • в Wiren Board 6.3 – 6.6 и Wiren Board 5 соединить один из выводов разъема ON/OFF с GND.

На иллюстрациях красными кружками показаны контакты, к которым нужно подключить контакт WB или контакт из разъёма ON/OFF. Фиолетовой стрелкой показан пример подключения.

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

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

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

systemctl stop watchdog

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

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

systemctl start watchdog

Если вы хотите навсегда отключить слежение сторожевого таймера за одним из сервисов, отредактируйте конфигурационный файл /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

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

systemctl restart watchdog