#!/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