Tango starter daemon source
#!/bin/sh
#
# tango-starter
#
# description: Tango control system starter daemon
# chkconfig: 2345 90 10
#
. /etc/rc.d/init.d/functions
PREFIX=/usr
TANGO_CONFIG=/etc/tangorc
STARTER_CONFIG=/etc/sysconfig/tango-starter
PID_FILE=/var/run/tango-starter.pid
LOCK_FILE=/var/lock/subsys/tango-starter
# set up environment
. /etc/profile
[ -f $TANGO_CONFIG ] && . $TANGO_CONFIG
[ -f $STARTER_CONFIG ] && . $STARTER_CONFIG
if [ -z $TANGO_HOST ]; then
echo $"error: TANGO_HOST not set"
exit 1
fi
export TANGO_HOST
DAEMON=Starter
DAEMON_ARGS=`hostname -s`
CLASS=Starter
SERVER=$CLASS/`hostname -s`
DEVICE=tango/admin/`hostname -s`
RETVAL=0
start()
{
echo -n $"Starting Tango starter daemon"
status -p $PID_FILE tango-starter >/dev/null
if [ $? -eq 0 ]; then
echo
echo -n $"Starter server is running"
RETVAL=0
else
tango_admin --ping-database >/dev/null
if [ $? -ne 0 ]; then
echo
echo -n "Tango database connection failed"
RETVAL=1
else
tango_admin --check-device $DEVICE
if [ $? -ne 0 ]; then
echo
echo -n "Adding $SERVER to the Tango database"
tango_admin --add-server $SERVER $CLASS $DEVICE >> /dev/null
tango_admin --add-property $DEVICE startDsPath $PREFIX/bin >> /dev/null
fi
runuser -m $TANGO_USER -c \
"$DAEMON $DAEMON_ARGS >/dev/null 2>&1 &"
sleep 2
# check if daemon survived..
pidofproc $DAEMON > $PID_FILE
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
touch $LOCK_FILE
else
rm -f $PID_FILE
fi
fi
fi
[ $RETVAL -eq 0 ] && success || failure
echo
return $RETVAL
}
stop()
{
echo -n $"Stopping Tango starter daemon"
status -p $PID_FILE tango-starter >/dev/null
if [ $? -eq 3 ]; then
echo
echo -n $"Starter server is not running"
RETVAL=0
else
killproc -p $PID_FILE $DAEMON
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $PID_FILE $LOCK_FILE
fi
[ $RETVAL -eq 0 ] && success || failure
echo
return $RETVAL
}
restart()
{
stop
start
}
# See how we were called.
case "$1" in
start )
start
;;
stop )
stop
;;
status )
status -p $PID_FILE tango-starter
;;
restart | reload )
restart
;;
condrestart )
[ -f $LOCK_FILE ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
exit 1
esac
exit 0