Перейти к содержанию

Навигация

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

4351 байт добавлено ,  3 года назад
(Отметить эту версию для перевода)
(не показано 25 промежуточных версий 2 участников)
Строка 2: Строка 2:
<translate>
<translate>
<!--T:1-->
<!--T:1-->
Сторожевой таймер, или "Watchdog" — аппаратно реализованная схема контроля за зависанием системы.  
'''Сторожевой таймер''' (англ. ''watchdog'') — аппаратно реализованная схема контроля за зависанием системы.  
 
Представляет собой отдельную микросхему-компаратор, ведущую отсчёт времени. Если таймер досчитывает до заданного времени (около 15 секунд), происходит перезагрузка по питанию (выключение одной из линий питания на 3-4 секунды). В нормальном режиме таймер периодически сбрасывается подачей переменного сигнала, подаваемого на вход таймера с одного из выводов GPIO процессора.
Этот GPIO контролируется специальным сервисом Linux <code>watchdog</code>. Интерфейс сторожевого таймера <code>/dev/watchdog1</code>, конфигурация сервиса хранится в файле <code>/etc/watchdog.conf</code>.
 
==Отключение сторожевого таймера==
Сторожевой таймер иногда требуется отключить:
# Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) - если сторожевой таймер будет работать, то контроллер даже после команды <code>halt</code> через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера.
# Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.
 
===Отключение сторожевого таймера аппаратным способом===


<!--T:2-->
<!--T:2-->
Представляет собой таймер, построенный на отдельной микросхеме-компараторе. Таймер периодически сбрасывается подачей переменного сигнала, подаваемого на вход таймера с вывода GPIO процессора.  
Для отключения требуется [[Special:MyLanguage/Разбираем корпус контроллера|разобрать корпус контроллера]] и соединить один из выводов разъема ON/OFF с GND.


<!--T:3-->
<!--T:3-->
Если сброса не произошло в течение некоторого интервала времени (~15c), происходит перезагрузка по питанию (выключение одной из линий питания на 3-4 секунды).
{| class="wikitable"
! [[File:Watchdog_disable_wb5.png|550px|thumb|left|Wiren Board 5]]
! [[File:Watchdog_disable_wb6.png|550px|thumb|center|Wiren Board 6]]
|}


<!--T:4-->
<!--T:4-->
В системе watchdog представлен устройством /dev/watchdog1, конфигурация watchdog-демона храниться в файле /etc/watchdog.conf
На иллюстрациях показано, какие выводы необходимо соединить для этого в контроллерах Wiren Board 5 и WirenBoard 6. Нужный вывод разъема ON/OFF отмечен красной стрелкой, выводы GND (можно использовать любой) отмечены красными кружками. Фиолетовой линией показан пример соединения.
 
===Отключение сторожевого таймера программным способом===
''Этим способом вы сможете только остановить циклическую перезагрузку из-за неправильной работы ПО. Добиться им полного выключения контроллера при наличии питания не получится.''
 
Чтобы отключить сторожевой таймер, остановите его службу:
<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
pidfile = /var/run/syslogd.pid
pidfile = /var/run/sshd.pid
pidfile = /var/run/mosquitto.pid
#pidfile = /var/run/nginx.pid
</syntaxhighlight>
а затем выполните
<syntaxhighlight lang="bash">
service watchdog restart
</syntaxhighlight>
</translate>
</translate>