80 lines
1.7 KiB
Bash
80 lines
1.7 KiB
Bash
#!/bin/sh
|
|
. /etc/init.d/functions
|
|
|
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
|
DAEMON=/usr/bin/Starter
|
|
NAME=tango-starter
|
|
DESC="Tango Control System Starter"
|
|
PIDFILE=/var/run/$NAME.pid
|
|
|
|
USER=tango
|
|
GROUP=tango
|
|
INSTANCE=`hostname`
|
|
|
|
[ -x "$DAEMON" ] || { failure; echo " $DAEMON executable not found."; exit 1; }
|
|
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
|
|
|
check_database()
|
|
{
|
|
# Ping network seems to be broken (hangs forever)
|
|
#tango_admin --ping-network 40 || return 1
|
|
tango_admin --ping-database 6 || return 1
|
|
}
|
|
|
|
check_and_register_instance()
|
|
{
|
|
tango_admin --check-device tango/admin/$INSTANCE || \
|
|
tango_admin --add-server Starter/$INSTANCE Starter tango/admin/$INSTANCE || return 1
|
|
}
|
|
|
|
do_start()
|
|
{
|
|
echo "Starting $DESC..."
|
|
check_database
|
|
[ "$?" -eq "1" ] && { failure; echo " Database ping failed."; exit 1; }
|
|
passed; echo " Database ping OK."
|
|
check_and_register_instance
|
|
[ "$?" -eq "1" ] && { failure; echo " Could not register Starter instance $INSTANCE."; exit 1; }
|
|
passed; echo " Starter instance OK.";
|
|
start-stop-daemon -S -x $DAEMON -c $USER:$GROUP -p $PIDFILE -m -b -- $INSTANCE
|
|
success; echo " $DESC started."
|
|
}
|
|
|
|
do_stop()
|
|
{
|
|
echo "Stopping $DESC..."
|
|
start-stop-daemon -K -x $DAEMON -p $PIDFILE
|
|
success; echo " $DESC stopped."
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
do_start
|
|
;;
|
|
stop)
|
|
do_stop
|
|
;;
|
|
status)
|
|
status $DAEMON
|
|
;;
|
|
reload)
|
|
echo "Reloading $DESC..."
|
|
start-stop-daemon -K -s 1 -x $DAEMON -p $PIDFILE
|
|
success; echo " $DESC reloaded."
|
|
;;
|
|
restart|force-reload)
|
|
echo "Restarting $DESC..."
|
|
do_stop
|
|
sleep 5
|
|
do_start
|
|
success; echo " $DESC restarted."
|
|
;;
|
|
*)
|
|
N=/etc/init.d/$NAME
|
|
echo "Usage: $N {start|stop|status|reload|restart|force-reload}" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|