From 66252335f95dc91118739e1995892aa9d837cafe Mon Sep 17 00:00:00 2001 From: root Date: Thu, 29 Mar 2012 13:11:39 +0200 Subject: [PATCH] Shutdown weiter verbessert --- Dump.sh | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Dump.sh b/Dump.sh index 3a569cc..61e96eb 100755 --- a/Dump.sh +++ b/Dump.sh @@ -13,12 +13,16 @@ if [ -z "$NAME" ]; then NAME=0 fi +SHUTDOWN_IN_PROGRESS="false" quit() { - echo "quitting..." - PIDS="$(cat ${PIDFILE_BASE}_A 2>/dev/null) $(cat ${PIDFILE_BASE}_B 2>/dev/null)" - rm ${PIDFILE_BASE}_A ${PIDFILE_BASE}_B 2>&1 >> /dev/null - kill $PIDS 2>/dev/null || (sleep 10; kill -9 $PIDS 2>/dev/null) - exit $0 + if [ "$SHUTDOWN_IN_PROGRESS" == "false" ]; then + SHUTDOWN_IN_PROGRESS="true" + echo "quitting..." + PIDS="$(cat ${PIDFILE_BASE}_A 2>/dev/null) $(cat ${PIDFILE_BASE}_B 2>/dev/null)" + rm -f ${PIDFILE_BASE}_A ${PIDFILE_BASE}_B + kill $PIDS 2>/dev/null || (echo "waiting for remaining proccesses..."; sleep 10; echo "killing remaining proccesses..."; kill -9 $PIDS 2>/dev/null) + exit $1 + fi } trap 'quit 0' SIGINT SIGTERM EXIT @@ -35,16 +39,18 @@ do_record() { } while true; do + if [ ! -z "$PIDS_A" ]; then echo "killing group A"; kill -9 $PIDS_A 2>/dev/null; fi echo "starting group A" do_record A & - PIDS_B=$(cat ${PIDFILE_BASE}_B 2>/dev/null) - if [ ! -z "$PIDS_B" ]; then echo "killing group B"; kill $PIDS_B; fi + PIDS_B="$(cat ${PIDFILE_BASE}_B 2>/dev/null)" + if [ ! -z "$PIDS_B" ]; then echo "killing group B"; kill $PIDS_B 2>/dev/null; fi sleep $SECONDS_PER_FILE + if [ ! -z "$PIDS_B" ]; then echo "killing group B"; kill -9 $PIDS_B 2>/dev/null; fi echo "starting group B" do_record B & - PIDS_A=$(cat ${PIDFILE_BASE}_A 2>/dev/null) - if [ ! -z "$PIDS_A" ]; then echo "killing group A"; kill $PIDS_A; fi + PIDS_A="$(cat ${PIDFILE_BASE}_A 2>/dev/null)" + if [ ! -z "$PIDS_A" ]; then echo "killing group A"; kill $PIDS_A 2>/dev/null; fi sleep $SECONDS_PER_FILE done