187 lines
5.9 KiB
Plaintext
Executable File
187 lines
5.9 KiB
Plaintext
Executable File
proc_watch ()
|
|
{
|
|
# set -x # Uncomment to debug this function
|
|
# This function does all of the process monitoring!
|
|
|
|
while : # Loop Forever!!
|
|
do
|
|
case $RUN in
|
|
'Y')
|
|
# This will run the startup_event_script, which is a function
|
|
if [[ $RUN_STARTUP_EVENT = 'Y' ]]
|
|
then
|
|
echo "STARTUP EVENT: Executing Startup Event Script..."\
|
|
> $TTY
|
|
echo "STARTUP EVENT: Executing Startup Event Script..."\
|
|
>> $LOGFILE
|
|
|
|
startup_event_script # USER DEFINED FUNCTION!!!
|
|
RC=$? # Check the Return Code!!
|
|
if (( "RC" == 0 ))
|
|
then
|
|
echo "SUCCESS: Startup Event Script Completed RC -\
|
|
${RC}" > $TTY
|
|
echo "SUCCESS: Startup Event Script Completed RC -\
|
|
${RC}" >> $LOGFILE
|
|
|
|
else
|
|
echo "FAILURE: Startup Event Script FAILED RC -\
|
|
${RC}" > $TTY
|
|
echo "FAILURE: Startup Event Script FAILED RC -\
|
|
${RC}" >> $LOGFILE
|
|
fi
|
|
fi
|
|
integer PROC_COUNT='-1' # Reset the Counters
|
|
integer LAST_COUNT='-1'
|
|
# Loop until the process(es) end(s)
|
|
|
|
until (( "PROC_COUNT" == 0 ))
|
|
do
|
|
# This function is a Co-Process. $BREAK checks to see if
|
|
# "Program Interrupt" has taken place. If so BREAK will
|
|
# be 'Y' and we exit both the loop and function.
|
|
|
|
read BREAK
|
|
if [[ $BREAK = 'Y' ]]
|
|
then
|
|
return 3
|
|
fi
|
|
|
|
PROC_COUNT=$(ps aux | grep -v "grep $PROCESS" \
|
|
| grep -v $SCRIPT_NAME \
|
|
| grep $PROCESS | wc -l) >/dev/null 2>&1
|
|
|
|
if (( "LAST_COUNT" > 0 && "LAST_COUNT" != "PROC_COUNT" ))
|
|
then
|
|
# The Process Count has Changed...
|
|
TIMESTAMP=$(date +%D@%T)
|
|
# Get a list of the PID of all of the processes
|
|
PID_LIST=$(ps aux | grep -v "grep $PROCESS" \
|
|
| grep -v $SCRIPT_NAME \
|
|
| grep $PROCESS | awk '{print $2}')
|
|
|
|
echo "PROCESS COUNT: $PROC_COUNT $PROCESS\
|
|
Processes Running ==> $TIMESTAMP" >> $LOGFILE &
|
|
echo "PROCESS COUNT: $PROC_COUNT $PROCESS\
|
|
Processes Running ==> $TIMESTAMP" > $TTY
|
|
echo ACTIVE PIDS: $PID_LIST >> $LOGFILE &
|
|
echo ACTIVE PIDS: $PID_LIST > $TTY
|
|
fi
|
|
LAST_COUNT=$PROC_COUNT
|
|
sleep $INTERVAL # Needed to reduce CPU load!
|
|
done
|
|
|
|
RUN='N' # Turn the RUN Flag Off
|
|
TIMESTAMP=$(date +%D@%T)
|
|
echo "ENDING PROCESS: $PROCESS END time ==>\
|
|
$TIMESTAMP" >> $LOGFILE &
|
|
echo "ENDING PROCESS: $PROCESS END time ==>\
|
|
$TIMESTAMP" > $TTY
|
|
|
|
# This will run the post_event_script, which is a function
|
|
|
|
if [[ $RUN_POST_EVENT = 'Y' ]]
|
|
then
|
|
echo "POST EVENT: Executing Post Event Script..."\
|
|
> $TTY
|
|
echo "POST EVENT: Executing Post Event Script..."\
|
|
>> $LOGFILE &
|
|
|
|
post_event_script # USER DEFINED FUNCTION!!!
|
|
integer RC=$?
|
|
if (( "RC" == 0 ))
|
|
then
|
|
echo "SUCCESS: Post Event Script Completed RC -\
|
|
${RC}" > $TTY
|
|
echo "SUCCESS: Post Event Script Completed RC -\
|
|
${RC}" >> $LOGFILE
|
|
else
|
|
echo "FAILURE: Post Event Script FAILED RC - ${RC}"\
|
|
> $TTY
|
|
echo "FAILURE: Post Event Script FAILED RC - ${RC}"\
|
|
>> $LOGFILE
|
|
fi
|
|
fi
|
|
;;
|
|
|
|
'N')
|
|
# This will run the pre_event_script, which is a function
|
|
|
|
if [[ $RUN_PRE_EVENT = 'Y' ]]
|
|
then
|
|
echo "PRE EVENT: Executing Pre Event Script..." > $TTY
|
|
echo "PRE EVENT: Executing Pre Event Script..." >> $LOGFILE
|
|
|
|
pre_event_script # USER DEFINED FUNCTION!!!
|
|
RC=$? # Check the Return Code!!!
|
|
if (( "RC" == 0 ))
|
|
then
|
|
echo "SUCCESS: Pre Event Script Completed RC - ${RC}"\
|
|
> $TTY
|
|
echo "SUCCESS: Pre Event Script Completed RC - ${RC}"\
|
|
>> $LOGFILE
|
|
else
|
|
echo "FAILURE: Pre Event Script FAILED RC - ${RC}"\
|
|
> $TTY
|
|
echo "FAILURE: Pre Event Script FAILED RC - ${RC}"\
|
|
>> $LOGFILE
|
|
fi
|
|
fi
|
|
|
|
echo "WAITING: Waiting for $PROCESS to \
|
|
startup...Monitoring..."
|
|
|
|
integer PROC_COUNT='-1' # Initialize to a fake value
|
|
|
|
# Loop until at least one process starts
|
|
|
|
until (( "PROC_COUNT" > 0 ))
|
|
do
|
|
# This is a Co-Process. This checks to see if a "Program
|
|
# Interrupt" has taken place. If so BREAK will be 'Y' and
|
|
# we exit both the loop and function
|
|
|
|
read BREAK
|
|
if [[ $BREAK = 'Y' ]]
|
|
then
|
|
return 3
|
|
fi
|
|
|
|
PROC_COUNT=$(ps aux | grep -v "grep $PROCESS" \
|
|
| grep -v $SCRIPT_NAME | grep $PROCESS | wc -l) \
|
|
>/dev/null 2>&1
|
|
|
|
sleep $INTERVAL # Needed to reduce CPU load!
|
|
done
|
|
|
|
RUN='Y' # Turn the RUN Flag On
|
|
|
|
TIMESTAMP=$(date +%D@%T)
|
|
|
|
PID_LIST=$(ps aux | grep -v "grep $PROCESS" \
|
|
| grep -v $SCRIPT_NAME \
|
|
| grep $PROCESS | awk '{print $2}')
|
|
|
|
if (( "PROC_COUNT" == 1 ))
|
|
then
|
|
echo "START PROCESS: $PROCESS START time ==>\
|
|
$TIMESTAMP" >> $LOGFILE &
|
|
echo ACTIVE PIDS: $PID_LIST >> $LOGFILE &
|
|
echo "START PROCESS: $PROCESS START time ==>\
|
|
$TIMESTAMP" > $TTY
|
|
echo ACTIVE PIDS: $PID_LIST > $TTY
|
|
elif (( "PROC_COUNT" > 1 ))
|
|
then
|
|
echo "START PROCESS: $PROC_COUNT $PROCESS\
|
|
Processes Started: START time ==> $TIMESTAMP" >> $LOGFILE &
|
|
echo ACTIVE PIDS: $PID_LIST >> $LOGFILE &
|
|
echo "START PROCESS: $PROC_COUNT $PROCESS\
|
|
Processes Started: START time ==> $TIMESTAMP" > $TTY
|
|
echo ACTIVE PIDS: $PID_LIST > $TTY
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|