1#! /bin/bash 2# 3# starts @progtitle@ from the installation directory and keeps it running 4 5[ X"${PIDDIR}" = X"" ] && PIDDIR=${HOME}/.@prognamebase@ 6[ X"${VARDIR}" = X"" ] && VARDIR=${HOME}/.@prognamebase@/var 7[ X"${BINDIR}" = X"" ] && BINDIR=@prefix_reloc@/bin 8 9echo $$ > ${PIDDIR}/@progname@-starter.pid 10 11cd ${VARDIR} 12 13run() { 14 ${BINDIR}/@progname@@executable_suffix@ --userdatadir ${VARDIR} --daemon $* & 15 jobs -p > ${PIDDIR}/@progname@.pid 16 [ -s ${PIDDIR}/@progname@.pid ] || { echo "Warning: main program PID unavailable, server can't be stopped reliably."; echo $$ > ${PIDDIR}/@progname@.pid ; } 17 wait 18 echo Terminated 19} 20 21while true; do 22 STARTDATE=`date +%s` 23 24 run $* 25 26 # give up if restarts come too quickly; ten per minute is suspicious 27 OLDESTSTART=${STARTDATE_LOG[1]} 28 if [ ! -z "$OLDESTSTART" ]; then 29 TIMESPENT=`expr ${STARTDATE} - ${OLDESTSTART}` 30 if [ $TIMESPENT -lt 60 ]; then 31 echo "Stopping server, it is restarting too quickly." 32 rm -f ${PIDDIR}/@progname@-starter.pid 33 rm -f ${PIDDIR}/@progname@.pid 34 exit 35 fi 36 fi 37 38 # keep log of past start dates 39 for f in 1 2 3 4 5 6 7 8 9; do 40 next=`expr $f + 1` 41 STARTDATE_LOG[$f]=${STARTDATE_LOG[$next]} 42 done 43 STARTDATE_LOG[10]=${STARTDATE} 44done 45