Watchdog: различия между версиями
Строка 2: | Строка 2: | ||
<translate> | <translate> | ||
<!--T:1--> | <!--T:1--> | ||
{{DISPLAYTITLE: Watchdog в контроллерах Wiren Board | {{DISPLAYTITLE: Watchdog в контроллерах Wiren Board}} | ||
== | == Wiren Board 7.4 == | ||
=== Как устроен === | |||
{{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
.
Вы можете добавить в него свой сервис или отредактировать заводской список:
- Разберите корпус контроллера.
- Нажмите кнопку B1 и включите контроллер. Далее можете удерживать кнопку нажатой или нажимать её примерно раз в 20-30 секунд — так вы будете сбрасывать таймер.
- Остановите сервис командой
systemctl stop watchdog
. - Измените список отслеживаемых сервисов в файле
/etc/watchdog.conf
. - Запустите сервис командой
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.
Отключение сторожевого таймера
Сторожевой таймер иногда требуется отключить:
- Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) — если сторожевой таймер будет работать, то контроллер даже после команды
halt
через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера. - Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.
Отключение аппаратного сторожевого таймера
Для отключения требуется разобрать корпус контроллера и:
- в 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