Hi Kannel Developers,
We have been using -parachute to start Kannel (using /etc/init.d/kannel) to
add extra reliability as it was dropping, but then we can't stop Kannel
using a stop/start script. It's running using the latest CVS on Centos.
Without the
-parachute the script works perfectly and we want to thank Stephane Rosa for
the great script.
The reason for the problem is when Kannel starts, with the -parachute, it
also starts a watcher process to ensure if the child process crashes it will
restart them automatically. The stop/start script stops the main process
stored in bearerbox.pid, smsbox.pid and wapbox.pid but does not stop the
-parachute watcher for the bearerbox. The smsbox does go down after a
while, but the bearerbox watcher does not stop and allow the bearerbox to
drop and so you can't re-start Kannel using the script and you need to
manually kill the pid.
I'm not sure if this is a bug in the -parachute option.
Any suggestions appreciated.
[EMAIL PROTECTED] init.d]# ls /var/run/kannel/
bearerbox.pid smsbox.pid wapbox.pid
[EMAIL PROTECTED] init.d]# cat /var/run/kannel/bearerbox.pid
10073
[EMAIL PROTECTED] init.d]# cat /var/run/kannel/smsbox.pid
10110
[EMAIL PROTECTED] init.d]# cat /var/run/kannel/wapbox.pid
10124
[EMAIL PROTECTED] init.d]# service kannel status
bearerbox (pid 10074 10073) is running...
smsbox (pid 10111 10110) is running...
wapbox (pid 10125 10124) is running...
[EMAIL PROTECTED] init.d]# service kannel stop
Shutting down Mobile Gateway cvs-20070901: [ OK ]
[EMAIL PROTECTED] init.d]# service kannel status
bearerbox (pid 10074) is running...
smsbox (pid 10111 10110) is running...
wapbox is stopped
[EMAIL PROTECTED] init.d]# service kannel status
bearerbox (pid 10074) is running...
smsbox is stopped
wapbox is stopped
Requires manual intervention:
[EMAIL PROTECTED] init.d]# kill -9 10074
[EMAIL PROTECTED] init.d]# service kannel status
bearerbox is stopped
smsbox is stopped
wapbox is stopped
----------------------------------------------------------------------------
------------------------------
# This shell script takes care of starting and stopping
# the Kannel SMS & WAP gateway
# Original version Fabrice Gatille <[EMAIL PROTECTED]>
# Modified by Stephane Rosa ([EMAIL PROTECTED]) for RedHat9
# chkconfig: 2345 97 03
# description: Kannel is an SMS and WAP gateway
# The actual configurations we use are stored in "/etc/configurations" and
this is reflected in the script below
VERSION=`/usr/local/bin/gw-config --version` OPTIONS="--daemonize
--parachute --user kannel --pid-file /var/run/kannel/"
KANNELPATH=/usr/local/sbin
CONF=/etc/kannel.conf
CONFDIR=/etc/configurations
# Source function library & networking conf.
. /etc/init.d/functions
[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network
# Check that we are root ... so non-root users stop here [ `id -u` = 0 ] ||
exit 1
# Various other checks
[ ${NETWORKING} = "yes" ] || exit 0
[ -x $KANNELPATH/bearerbox ] || exit 0
[ -x $KANNELPATH/smsbox ] || exit 0
[ -x $KANNELPATH/wapbox ] || exit 0
[ -f $CONF ] || exit 0
RETVAL=0; RETVAL1=0; RETVAL2=0; RETVAL3=0 prog="Kannel"
start() {
# Check that at least one group is defined for sms
# and/or wap to start the bearer. Then start boxes
# as needed.
# startsms=`egrep -se '^[ \t]*group *= *smsbox' $CONF`
# startwap=`egrep -se '^[ \t]*group *= *wapbox' $CONF`
startsms=`egrep -hse '^[ \t]*group *= *smsbox' $CONF ${CONFDIR}/*`
startwap=`egrep -hse '^[ \t]*group *= *wapbox' $CONF ${CONFDIR}/*`
if [ -n "$startsms$startwap" ]; then
echo -n "Starting Mobile Gateway Service 1 ($VERSION): "
daemon /usr/local/sbin/bearerbox ${OPTIONS}bearerbox.pid -- $CONF
RETVAL1=$?
echo
sleep 15
else
exit 0
fi
if [ -n "$startsms" ]; then
echo -n "Starting Mobile Gateway Service 2 ($VERSION): "
daemon /usr/local/sbin/smsbox ${OPTIONS}smsbox.pid -- $CONF
RETVAL2=$?
echo
fi
if [ -n "$startwap" ]; then
echo -n "Starting Mobile Gateway Wap service ($VERSION): "
daemon /usr/local/sbin/wapbox ${OPTIONS}wapbox.pid -- $CONF
RETVAL3=$?
echo
fi
let RETVAL=$REVAL1+$RETVAL2+$RETVAL3
if [ $RETVAL -eq 0 ]; then
sleep 2
touch /var/lock/subsys/gateway
cat /var/run/kannel/*.pid > /var/run/kannel.pid
fi
return $RETVAL
}
stop() {
echo -n "Shutting down Mobile Gateway $VERSION: "
killproc kannel
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
sleep 2
rm -f /var/lock/subsys/gateway
rm /var/run/kannel/*.pid
fi
return $RETVAL
}
# See how we were called.
case "$1" in
start)
# Start daemons.
start
;;
stop)
# Stop daemons
stop
;;
restart)
# Restart daemons
stop
sleep 1
start
;;
status)
status bearerbox
status smsbox
status wapbox
exit $?
;;
*)
echo "Usage: named {start|stop|status|restart}"
RETVAL=1
esac
exit $RETVAL
----------------------------------------------------------------------------
------------------------------