Watchdog: различия между версиями
Sikmir (обсуждение | вклад) м (Fix typo) |
Fizikdaos (обсуждение | вклад) |
||
(не показаны 22 промежуточные версии 5 участников) | |||
Строка 1: | Строка 1: | ||
<languages/> | |||
<translate> | |||
<!--T:1--> | |||
'''Сторожевой таймер''' (англ. ''watchdog'') — аппаратно реализованная схема контроля за зависанием системы. | |||
Представляет собой отдельную микросхему-компаратор, ведущую отсчёт времени. Если таймер досчитывает до заданного времени (около 15 секунд), происходит перезагрузка по питанию (выключение одной из линий питания на 3-4 секунды). В нормальном режиме таймер периодически сбрасывается подачей переменного сигнала, подаваемого на вход таймера с одного из выводов GPIO процессора. | |||
Этот GPIO контролируется специальным сервисом Linux <code>watchdog</code>. Интерфейс сторожевого таймера <code>/dev/watchdog1</code>, конфигурация сервиса хранится в файле <code>/etc/watchdog.conf</code>. | |||
==Отключение сторожевого таймера== | |||
Сторожевой таймер иногда требуется отключить: | |||
# Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) - если сторожевой таймер будет работать, то контроллер даже после команды <code>halt</code> через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера. | |||
# Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер. | |||
== | ===Отключение сторожевого таймера аппаратным способом=== | ||
== | |||
<!--T:2--> | |||
Для отключения требуется [[Special:MyLanguage/Разбираем корпус контроллера|разобрать корпус контроллера]] и соединить один из выводов разъема ON/OFF с GND. | |||
<!--T:3--> | |||
{| class="wikitable" | |||
! [[Файл:WD-6.7.png|400px|thumb|left|Wiren Board 6.7]] | |||
! [[File:Watchdog_disable_wb6.png|400px|thumb|center|Wiren Board 6]] | |||
! [[File:Watchdog_disable_wb5.png|400px|thumb|left|Wiren Board 5]] | |||
|} | |||
<!--T:4--> | |||
На иллюстрациях показано, какие выводы необходимо соединить для этого в контроллерах Wiren Board 5 и WirenBoard 6. Нужный вывод разъема ON/OFF отмечен красной стрелкой, выводы GND (можно использовать любой) отмечены красными кружками. Фиолетовой линией показан пример соединения. | |||
В версии Wiren Board 6.9 нет простого способа аппаратно отключить сторожевой таймер. | |||
===Отключение сторожевого таймера программным способом=== | |||
''Этим способом вы сможете только остановить циклическую перезагрузку из-за неправильной работы ПО. Добиться им полного выключения контроллера при наличии питания не получится.'' | |||
Чтобы отключить сторожевой таймер, остановите его службу: | |||
<syntaxhighlight lang="bash"> | |||
service watchdog stop | |||
</syntaxhighlight> | |||
Но после перезагрузки контроллера служба сторожевого таймера запустится снова. | |||
Если вы исправили ошибки в работе ПО и хотите запустить обратно сторожевой таймер без перезагрузки контроллера, выполните | |||
<syntaxhighlight lang="bash"> | |||
service watchdog start | |||
</syntaxhighlight> | |||
Если вы хотите навсегда отключить слежение сторожевого таймера за одним из сервисов, отредактируйте конфигурационный файл <code>/etc/watchdog.conf</code>, закомментировав строки соответствующих сервисов (в этом примере отключено слежение за nginх): | |||
<syntaxhighlight lang="bash"> | |||
</ | |||
# Test if vital daemons are running | # Test if vital daemons are running | ||
pidfile | pidfile = /var/run/syslogd.pid | ||
pidfile | pidfile = /var/run/sshd.pid | ||
pidfile = /var/run/mosquitto.pid | |||
#pidfile = /var/run/nginx.pid | |||
</syntaxhighlight> | </syntaxhighlight> | ||
а затем выполните | |||
<syntaxhighlight lang="bash"> | |||
service watchdog restart | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</translate> | |||
</ | |||
Версия 11:29, 1 декабря 2021
Сторожевой таймер (англ. watchdog) — аппаратно реализованная схема контроля за зависанием системы.
Представляет собой отдельную микросхему-компаратор, ведущую отсчёт времени. Если таймер досчитывает до заданного времени (около 15 секунд), происходит перезагрузка по питанию (выключение одной из линий питания на 3-4 секунды). В нормальном режиме таймер периодически сбрасывается подачей переменного сигнала, подаваемого на вход таймера с одного из выводов GPIO процессора.
Этот GPIO контролируется специальным сервисом Linux watchdog
. Интерфейс сторожевого таймера /dev/watchdog1
, конфигурация сервиса хранится в файле /etc/watchdog.conf
.
Отключение сторожевого таймера
Сторожевой таймер иногда требуется отключить:
- Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) - если сторожевой таймер будет работать, то контроллер даже после команды
halt
через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера. - Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.
Отключение сторожевого таймера аппаратным способом
Для отключения требуется разобрать корпус контроллера и соединить один из выводов разъема ON/OFF с GND.
На иллюстрациях показано, какие выводы необходимо соединить для этого в контроллерах 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