#!/bin/bash
#
#  This script moniting the hmc credential manager.
#  If credential manager dies, re-launch it automatically.
#

#set -x

osname=`uname`

stopsvc()
{
   trap "" 1 2 3 15
   SvcPid=`cat $SvcPidFile`
   kill -9 $SvcPid
   sleep 1
   unlink  $SvcPidFile
}

startsvc()
{
   trap "stopsvc" 1
   trap "stopsvc; exit" 2 3 9 15
#   trap -p

   if [ -f $SvcPidFile ]; then
      APid=`cat $SvcPidFile`
      if [ "$osname" != "AIX" ]; then
         ps -ewwwf | grep ${SvcDir}/$SvcName | grep $APid
      else
         ps -ef | grep ${SvcDir}/$SvcName | grep $APid
      fi
      if [ $? -eq 0 ]; then
         echo "$SvcName has been running. "
         return
      fi
   fi
      
   cd $SvcDir
   ${SvcDir}/$SvcName $SvcParams &
   SvcPid=$!

   echo $SvcPid > $SvcPidFile
   cd $CurrDir
}


# --- main script start here 
SvcDir=/opt/hsc/sbin
SvcName=hsccredmgr
SvcParams=
SvcPidFile=/var/hsc/${SvcName}.pid
CurrDir=`pwd`

let "beginTime = `date +%s`"
let "count = 0"
while (true)
do
    let "count = count + 1"
    let "t = `date +%s` - beginTime"
#    echo "$count  $t"
    if [ $count -gt 20 ]; then
       if [ $t -lt 30 ]; then
          echo  "Launch $SvcName too fast. Sleep 5 minutes ..."
          sleep 300
       else
          let "beginTime = `date +%s`"
          let "count = 0"
       fi
    fi

    startsvc
    wait $SvcPid
done

echo "$SvcName quited!"
 
