How-to to stop bearerbox with a script and -parachute
"Hillel" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <!&!AAAAAAAAAAAYAAAAAAAAAAht0jWTOrFAoEs8v1HaiFjCgAAAEAAAAGgvnWAGLMpFreSorrEpkA8BAAAAAA==@ecommunicate.biz> |
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. [root@www init.d]# ls /var/run/kannel/ bearerbox.pid smsbox.pid wapbox.pid [root@www init.d]# cat /var/run/kannel/bearerbox.pid 10073 [root@www init.d]# cat /var/run/kannel/smsbox.pid 10110 [root@www init.d]# cat /var/run/kannel/wapbox.pid 10124 [root@www init.d]# service kannel status bearerbox (pid 10074 10073) is running... smsbox (pid 10111 10110) is running... wapbox (pid 10125 10124) is running... [root@www init.d]# service kannel stop Shutting down Mobile Gateway cvs-20070901: [ OK ] [root@www init.d]# service kannel status bearerbox (pid 10074) is running... smsbox (pid 10111 10110) is running... wapbox is stopped [root@www init.d]# service kannel status bearerbox (pid 10074) is running... smsbox is stopped wapbox is stopped Requires manual intervention: [root@www init.d]# kill -9 10074 [root@www 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 ---------------------------------------------------------------------------- ------------------------------