АСР Пиарбайт - PRbyte SDA

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта
Home Статьи Антон Гриев Asterisk watchdog или как забыть про seg fault
Антон Гриев
Asterisk watchdog или как забыть про seg fault
2010.01.07 10:21:40

Большинство из нас сталкивается с проблемой segmentation fault даже в стабильных версиях астериска (Asterisk). Никто не застрахован от такого, а так как внятых механизмов отслеживания состояния и перезапуска я не нашёл, то пришлось написать собственный маленький скриптик:

#!/bin/sh

AST_STATE=$(ps auxw | grep /usr/sbin/asterisk | grep -v grep | awk '{print $2}' | tr ' ' ' ')
echo $(date) "Starting Asterisk watchdog, asterisk proc id:"${AST_STATE} >> /var/log/messages

while test 1 -ge 1
do
if !(test ${AST_STATE} -gt 0);
then
echo $(date)" Asterisk is dead, restarting:" >> /var/log/messages
/etc/init.d/asterisk restart;
fi
sleep 10
AST_STATE=$(ps auxw | grep /usr/sbin/asterisk | grep -v grep | awk '{print $2}' | tr ' ' ' ')
echo $(date)" Asterisk is running, process id:"${AST_STATE} >> /var/log/messages
done

Он каждые 10 секунд проверет состояние процесса, и если он мёртв, вызывает скрипт перезапуска. При небольшой доработке скрипт можно использовать для отслеживания состояния любого процесса, причем не только Asterisk'а.

Если хотите, чтобы он запускался при старте, просто добавьте строчку запуска скрипта в файлик /etc/rc.local
и он будет стартовать после загрузки всех модулей и приложений текущего runlevel.

 

Антон Гриев 31.10.2008

оригинал статьи: http://certified-partners.blogspot.com/2008/10/asterisk-watchdog-seg-fault.html




Теги: Asterisk


 

Комментировать
Логин:

E-mail:

  Enter text shown in left: