mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.3 KiB
57 lines
1.3 KiB
#!/bin/sh
|
|
#
|
|
# $Id$
|
|
#
|
|
# use to check whether all ser processes are running; if not, restart
|
|
# and issue an alert; run from cron daemon for best results :-)
|
|
#
|
|
|
|
|
|
NOTIFY=sr@iptel.org
|
|
SERHOME=/home/srouter
|
|
export SERDIR=$SERHOME/sip_router
|
|
BIN=$SERDIR/ser
|
|
COREDIR=$SERHOME/core
|
|
CORE=$COREDIR/core
|
|
ETC=/etc/sr.cfg
|
|
|
|
PROCCNT=`ps -C sr --no-headers -o pid | wc -l`
|
|
CH=`grep "^children" $ETC | awk -F= ' { print $2 } '`
|
|
ALL=`expr $CH + 1`
|
|
TMP=/tmp/seralert.$$
|
|
|
|
|
|
if [ $PROCCNT -ne $ALL ] ; then
|
|
# try again first -- it might have been a temporary
|
|
# failure during 'sr restart'
|
|
|
|
# two seconds longer failure is not too bad...UAs will
|
|
# just retransmit and user are used to longer call
|
|
# set-up times from GSM...
|
|
sleep 2
|
|
PROCCNT=`ps -C sr --no-headers -o pid | wc -l`
|
|
fi
|
|
|
|
if [ $PROCCNT -ne $ALL ] ; then
|
|
|
|
cd $SERDIR
|
|
echo "Alarm: ser restart occurred on `date` at $HOSTNAME" > $TMP
|
|
if [ -r $BIN -a -r $CORE ] ; then
|
|
echo "----------------------------------" >> $TMP
|
|
DATE=`date "+%Y-%m-%d--%H-%M"`
|
|
NEWCORE=$COREDIR/core.$DATE
|
|
mv $CORE $NEWCORE
|
|
echo core stored in $NEWCORE >> $TMP
|
|
gdb $BIN $NEWCORE -x test/bt.gdb -batch >> $TMP
|
|
chmod a+r $NEWCORE
|
|
( cd $SERDIR; tar cf - . ) | gzip > $COREDIR/ser.$DATE.tgz
|
|
|
|
else
|
|
echo "no core found" >> $TMP
|
|
fi
|
|
|
|
/etc/init.d/sr restart
|
|
mail -s "ser restart occurred" $NOTIFY < $TMP
|
|
rm -f $TMP
|
|
fi
|