[Zope] working crontab restart script on FreeBsd

George Osvald mail@okstudio.com.au
Mon, 2 Oct 2000 01:58:18 +1000


I was trying to do this for a little while so in case anyone's interested,
here it is. Most of the code was kindly sent to me by other people so do not
blame me for the mistakes. This script(auto) checks ZOPE every 15'th minute
and if it does not run, it will restart it. It has been working without a
problem on FreeBSD 4.0 after I patched ZOPE's pidfile for LF's. (without
that little operation it returns an error message and restarts ZOPE every
time without checking it)

I am running this from crontab:

SHELL=/bin/sh
0,15,30,45 * * * * /home/user/auto

And this script(auto) is sitting in my user directory:

#!/bin/sh

ZOPEDIR="/home/user/zope"
INFOMAIL="mail@okstudio.com.au"

STARTFILE="$ZOPEDIR/start"
STOPFILE="$ZOPEDIR/stop"
PIDFILE="$ZOPEDIR/var/Z2.pid"
PID1ACTIVE=0
PID2ACTIVE=0
if [ -x $STARTFILE ]; then
  if [ -r $PIDFILE ]; then
    PID1=`cut -d" " -f1 $PIDFILE`
    PID2=`cut -d" " -f2 $PIDFILE`
    if
    kill -0 $PID1 2>/dev/null
    then
      PID1ACTIVE=1
    fi
    if
    kill -0 $PID2 2>/dev/null
    then
      PID2ACTIVE=1
    fi
  fi
  if [ $PID1ACTIVE -eq 0 -o $PID2ACTIVE -eq 0 ]; then
    $STOPFILE >/dev/null 2>&1
    sleep 10
    $STARTFILE
    date | mail -s"Zope restarted" $INFOMAIL >/dev/null 2>&1
  fi
fi

Regards,

George