#!/bin/ksh
# cron_check.ksh
# Because cron seems virtually indestructable within its own mechanisms will open up the concept to $1 named scenarios


if [ ! -z "$2" ]; then
  if [ "$2" == "restart" -o "$2" == "stop" ]; then
    ONE="cron_check.ksh"
    TONE=1
    LIST=""
    while [ "$ONE" == "cron_check.ksh" ]
    do
     CPID=`ps -ef | grep $ONE | grep $1 | grep -v 'grep' | tail +$TONE | head -1 | sed '/  /s// /g' | sed '/  /s// /g' | sed '/$ /s///g' | cut -d' ' -f 3`
     if [ $CPID ]; then
      if [ "$CPID" == "$$" ]; then
        LIST="$LIST"
      else
        echo $CPID
        LIST="$LIST $CPID"
      fi
      TONE=`expr $TONE + 1`
     else
      ONE=""
     fi
    done
    if [ ! -z "$LIST" ]; then
     echo $LIST
     sudo nohup kill -9 $LIST > /dev/null 2> /dev/null &
    fi
    if [ "$2" == "stop" ]; then
     exit
    fi
  fi
elif [ ! -z "$1" ]; then
  if [ "$1" == "restart" -o "$1" == "stop" ]; then
    ONE="cron_check.ksh"
    TONE=1
    LIST=""
    while [ "$ONE" == "cron_check.ksh" ]
    do
     CPID=`ps -ef | grep $ONE | grep -v 'grep' | tail +$TONE | head -1 | sed '/  /s// /g' | sed '/  /s// /g' | sed '/$ /s///g' | cut -d' ' -f 3`
     if [ $CPID ]; then
      if [ "$CPID" == "$$" ]; then
        LIST="$LIST"
      else
        echo $CPID
        LIST="$LIST $CPID"
      fi
      TONE=`expr $TONE + 1`
     else
      ONE=""
     fi
    done
    if [ ! -z "$LIST" ]; then
     echo $LIST
     sudo nohup kill -9 $LIST > /dev/null 2> /dev/null &
    fi
    if [ "$1" == "stop" ]; then
     exit
    fi
  fi
fi

ONE='cron'
if [ ! -z "$1" ]; then
  ONE="$1"
  echo "$ONE" > ./cron_check.ini
elif [ -f "cron_check.ini" ]; then
  ONE=`cat cron_check.ini`
fi
CPID=`ps -ef | grep $ONE | grep -v 'grep' | grep -v 'cron_check' | head -1 | sed '/  /s// /g' | sed '/  /s// /g' | sed '/$ /s///g' | cut -d' ' -f 3`
if [ $CPID ]; then
  echo "The pid of $ONE is $CPID ... $0 ... `ps -ef | grep $ONE | grep -v 'grep' | grep -v 'cron_check' | sed '/  /s// /g' | sed '/  /s// /g' | sed '/$ /s///g'` ... so $ONE is running okay at `date`"
else
  echo "Need to fix $ONE at `date` ... $0 ... running 'sudo $ONE restart' ..."
  if [ "$ONE" == "cron" ]; then
    sudo $ONE restart
  else
    nohup $ONE restart > /dev/null 2> /dev/null &
  fi
fi
if [ "$ONE" == "cron" ]; then
  NEXT=`at -f $0 now + 1 minute`
  echo $NEXT
else
  sleep 60
  sudo nohup $0 $ONE > `echo $0 | sed '/.ksh/s//.out/g'` &
fi
exit
