Perl — Watchdog

Watchdog - алгоритм, позволяющий отследить зависание какого-то приложения или аппаратного устройства. Приложение периодически отчитывается о том, что оно работает. Если отчёт задерживается на какое-то заранее установленное время, то watchdog-демон либо перегружает (если умеет), либо останавливает процесс. Это умеет делать monit, и это умеет делать Proc::Watchdog.

[cc lang='perl' ]
use Proc::Watchdog;
my $w = new Proc::Watchdog { -path => '/tmp' };
while(...){
$w->alarm(30); # убить текущий процесс, если в течении
#30-ти секунд не будет вызван alarm() или reset()
<долгая операция...>
}
$w->reset; # обнулить kill-clock (на практике удалить
#файл, в который записывается время убийства)

[/cc]

В директории /tmp создаётся файл с именем watchdog.$$ , в который пишутся те самые 30 секунд. Если за время <время обновления файла>+30 секунд файл не обновлён, процесс $$ будет убит.

Leave a Reply