From 487ff469455349262556c072adc20c8b26ec6222 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Tue, 19 Apr 2022 13:37:37 -0400 Subject: [PATCH] enhance the helper start scripts; --- dvm-watchdog.sh | 25 +++++++++++++++++-------- start-dvm.sh | 18 ++++++++++++------ stop-dvm.sh | 11 +++++++++++ 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/dvm-watchdog.sh b/dvm-watchdog.sh index b38b1e92..5c798336 100644 --- a/dvm-watchdog.sh +++ b/dvm-watchdog.sh @@ -1,18 +1,27 @@ #!/bin/bash R_PATH=/opt/dvm -pushd ${R_PATH} +pushd ${R_PATH} >/dev/null + +if [ -z $1 ]; then exit 1; fi +if [ -z $2 ]; then exit 1; fi -if [ -z $1 ]; then exit 99; fi PID_FILE=$1 -CONFIG_FILE=`cat $PID_FILE` +if [ ! -e $PID_FILE ]; then exit 98; fi +CONFIG=$2 +if [ ! -f ${R_PATH}/${CONFIG} ]; then exit 3; fi +PID=`cat $PID_FILE` while [ true ]; do - pgrep -f "[d]vmhost.*${CONFIG_FILE}" >/dev/null - if [ $? -ne 0 ]; then - ${R_PATH}/start-dvm.sh ${CONFIG_FILE} >/dev/null + PS_OUT=`ps --no-headers ${PID}` + if [ ${#PS_OUT} -eq 0 ]; then + logger "dvmhost PID ${PID} not running -- restarting ${PID_FILE} ${CONFIG}" + ${R_PATH}/start-dvm.sh ${CONFIG} ${PID_FILE} >/dev/null + ERRNO=$? + if [ $ERRNO -ne 0 ]; then + logger "dvmhost start-dvm.sh script failed to start; errno ${ERRNO}" + fi fi sleep 5s done -popd - +popd >/dev/null diff --git a/start-dvm.sh b/start-dvm.sh index 823ea66d..08b01336 100644 --- a/start-dvm.sh +++ b/start-dvm.sh @@ -1,24 +1,30 @@ #!/bin/bash R_PATH=/opt/dvm -pushd ${R_PATH} +pushd ${R_PATH} >/dev/null if [ "`pwd`" != "${R_PATH}" ]; then exit 99; fi if [ -z $1 ]; then exit 2; fi CONFIG=$1 if [ ! -f ${R_PATH}/${CONFIG} ]; then exit 3; fi +PID_FILE=$2 +if [ -z $2 ]; then + STRIPPED_CONFIG=`basename ${CONFIG}` + STRIPPED_CONFIG=${STRIPPED_CONFIG%.yml} + PID_FILE=/tmp/dvmhost.${STRIPPED_CONFIG}.pid +fi COMMAND="${R_PATH}/bin/dvmhost -c ${R_PATH}/${CONFIG}" nice -n -20 ${COMMAND} +if [ -e /tmp/${CONFIG}.pid ]; then rm -f /tmp/${CONFIG}.pid; fi + PID=`pgrep -f "${R_PATH}/${CONFIG}"` -PID_FILE=/tmp/${CONFIG}.pid -echo "${CONFIG}" > $PID_FILE +echo "${PID}" > $PID_FILE pgrep -f "[d]vm-watchdog.*${PID_FILE}" >/dev/null if [ $? -ne 0 ]; then - ${R_PATH}/dvm-watchdog.sh $PID_FILE & + ${R_PATH}/dvm-watchdog.sh $PID_FILE $CONFIG & fi -popd - +popd >/dev/null diff --git a/stop-dvm.sh b/stop-dvm.sh index 51fb4e9b..f764ba07 100644 --- a/stop-dvm.sh +++ b/stop-dvm.sh @@ -1,6 +1,17 @@ #!/bin/bash PID=`pgrep dvmhost` pgrep dvmhost >/dev/null +if [ $? -eq 0 ]; then + kill -15 $PID + sleep 2s + pgrep dvmhost >/dev/null + if [ $? -eq 0 ]; then + kill -9 $PID + fi +fi + +PID=`pgrep dvm-watchdog.sh` +pgrep dvm-watchdog.sh >/dev/null if [ $? -eq 0 ]; then kill -9 $PID fi