#!/usr/local/bin/ksh #set GOTRACEBACK=crash checkp() { pid=$1 port=$2 program=$3 d=`date` #echo $pid $port $program if fetch -q -o /dev/null http://127.0.0.1:$port/metrics; then echo $d $program with $pid is good > /dev/null runningpid=$pid else echo $program needs a restart echo $program needs a restart | /usr/bin/mail -s "zrepl restart needed" mike@sentex.net echo $pid $d $program >> $LOG /bin/ps -auxwwwwww >> $LOG /usr/bin/procstat -kk $pid >> $LOG kill -9 $pid sleep 2 kill -9 $pid sleep 2 $program & runningpid=$! #/usr/bin/cpuset -l 0,1 -p $runningpid fi #echo returning $pid return $runningpid } LOG=/tmp/zrepl/log #A='/usr/home/mdtancsa/zrepl-freebsd-amd64-go1.15rc1-p1 --config /usr/local/etc/zrepl3/zrepl.yml daemon' #A='/usr/local/bin/zrepl-jan30 --config /usr/local/etc/zrepl3/zrepl.yml daemon' #A='/usr/local/bin/zrepl.feb1 --config /usr/local/etc/zrepl3/zrepl.yml daemon' #A='/usr/local/bin/zrepl.feb4 --config /usr/local/etc/zrepl3/zrepl.yml daemon' A='/usr/local/bin/zrepl.feb6 --config /usr/local/etc/zrepl3/zrepl.yml daemon' echo starting A $A & pida=$! echo pid is $pida sleep 2 runningpid=$pida #set GOTRACEBACK=crash while true do checkp $pida 9091 "$A" pida=$runningpid echo -n . sleep 60 done