stabilität erhöht

This commit is contained in:
root 2014-04-04 07:23:07 +02:00
parent fb8a1ab0ea
commit 1f540fd8a9
1 changed files with 21 additions and 6 deletions

27
Dump.sh
View File

@ -1,4 +1,5 @@
#!/bin/bash #!/bin/bash
while true; do (
NAME=$1 NAME=$1
SERVER_IP=192.168.1.66 SERVER_IP=192.168.1.66
@ -22,6 +23,7 @@ mkdir -p $CAPTURE_DIR
cd $CAPTURE_DIR cd $CAPTURE_DIR
#OUT_FILE_TYPE="mjpeg" #OUT_FILE_TYPE="mjpeg"
OUT_FILE_TYPE="avi" OUT_FILE_TYPE="avi"
SCRIPT_PID=$$
SHUTDOWN_IN_PROGRESS="false" SHUTDOWN_IN_PROGRESS="false"
quit() { quit() {
@ -29,7 +31,7 @@ quit() {
SHUTDOWN_IN_PROGRESS="true" SHUTDOWN_IN_PROGRESS="true"
echo "quitting..." echo "quitting..."
PIDS="$(cat ${PIDFILE_BASE}_A 2>/dev/null) $(cat ${PIDFILE_BASE}_B 2>/dev/null)" PIDS="$(cat ${PIDFILE_BASE}_A 2>/dev/null) $(cat ${PIDFILE_BASE}_B 2>/dev/null)"
rm -f ${PIDFILE_BASE}_A ${PIDFILE_BASE}_B ${PIDFILE_BASE}_KILL_A ${PIDFILE_BASE}_KILL_B ${PIDFILE_BASE}_SLEEP_PID_A ${PIDFILE_BASE}_SLEEP_PID_B rm -f ${PIDFILE_BASE}_A ${PIDFILE_BASE}_B ${PIDFILE_BASE}_KILL_A ${PIDFILE_BASE}_KILL_B ${PIDFILE_BASE}_SLEEP_PID_A ${PIDFILE_BASE}_SLEEP_PID_B ${PIDFILE_BASE}_SLEEP_SYNC_A ${PIDFILE_BASE}_SLEEP_SYNC_B
kill $PIDS 2>/dev/null || (echo "waiting for remaining proccesses..."; sleep 10; echo "killing remaining proccesses..."; kill -9 $PIDS 2>/dev/null) kill $PIDS 2>/dev/null || (echo "waiting for remaining proccesses..."; sleep 10; echo "killing remaining proccesses..."; kill -9 $PIDS 2>/dev/null)
exit $1 exit $1
fi fi
@ -54,11 +56,16 @@ do_record() {
THIS_KILL_PID="$(cat ${PIDFILE_BASE}_KILL_${GROUP_ID} | grep -oe "\<${THIS_CAPTURE_PID}\>" )" THIS_KILL_PID="$(cat ${PIDFILE_BASE}_KILL_${GROUP_ID} | grep -oe "\<${THIS_CAPTURE_PID}\>" )"
fi fi
if [ -z "$THIS_KILL_PID" ]; then if [ -z "$THIS_KILL_PID" ]; then
echo "capture for camera $i died, killing group $GROUP_ID" # echo "capture for camera $i died, killing group $GROUP_ID"
if [ -f ${PIDFILE_BASE}_SLEEP_PID_${GROUP_ID} ]; then # while [ -f ${PIDFILE_BASE}_SLEEP_SYNC_$GROUP_ID ]; do sleep 1; done
THIS_SLEEP_PID="$(cat ${PIDFILE_BASE}_SLEEP_PID_${GROUP_ID})" # if [ -f ${PIDFILE_BASE}_SLEEP_PID_${GROUP_ID} ]; then
kill -9 $THIS_SLEEP_PID >> /dev/null 2>&1 # THIS_SLEEP_PID="$(cat ${PIDFILE_BASE}_SLEEP_PID_${GROUP_ID})"
fi # kill -9 $THIS_SLEEP_PID
# fi
echo "capture for camera $i died, commiting suicide"
kill $SCRIPT_PID >> /dev/null 2>&1
sleep 10
kill -9 %SCRIPT_PID >> /dev/null 2>&1
fi fi
} }
trap outfile_close_trap SIGINT SIGTERM EXIT trap outfile_close_trap SIGINT SIGTERM EXIT
@ -76,6 +83,7 @@ while true; do
if [ ! -z "$PIDS_A" ]; then kill -9 $PIDS_A 2>/dev/null; fi if [ ! -z "$PIDS_A" ]; then kill -9 $PIDS_A 2>/dev/null; fi
rm -f ${PIDFILE_BASE}_KILL_A rm -f ${PIDFILE_BASE}_KILL_A
echo "starting group A" echo "starting group A"
touch ${PIDFILE_BASE}_SLEEP_SYNC_A
do_record A do_record A
PIDS_B="$(cat ${PIDFILE_BASE}_B 2>/dev/null)" PIDS_B="$(cat ${PIDFILE_BASE}_B 2>/dev/null)"
if [ ! -z "$PIDS_B" ]; then if [ ! -z "$PIDS_B" ]; then
@ -90,11 +98,13 @@ while true; do
SLEEP_PID=$! SLEEP_PID=$!
fi fi
echo $SLEEP_PID > ${PIDFILE_BASE}_SLEEP_PID_A echo $SLEEP_PID > ${PIDFILE_BASE}_SLEEP_PID_A
rm -f ${PIDFILE_BASE}_SLEEP_SYNC_A
wait $SLEEP_PID wait $SLEEP_PID
if [ ! -z "$PIDS_B" ]; then kill -9 $PIDS_B 2>/dev/null; fi if [ ! -z "$PIDS_B" ]; then kill -9 $PIDS_B 2>/dev/null; fi
rm -f ${PIDFILE_BASE}_KILL_B rm -f ${PIDFILE_BASE}_KILL_B
echo "starting group B" echo "starting group B"
touch ${PIDFILE_BASE}_SLEEP_SYNC_B
do_record B do_record B
PIDS_A="$(cat ${PIDFILE_BASE}_A 2>/dev/null)" PIDS_A="$(cat ${PIDFILE_BASE}_A 2>/dev/null)"
if [ ! -z "$PIDS_A" ]; then if [ ! -z "$PIDS_A" ]; then
@ -109,7 +119,12 @@ while true; do
SLEEP_PID=$! SLEEP_PID=$!
fi fi
echo $SLEEP_PID > ${PIDFILE_BASE}_SLEEP_PID_B echo $SLEEP_PID > ${PIDFILE_BASE}_SLEEP_PID_B
rm -f ${PIDFILE_BASE}_SLEEP_SYNC_B
echo waiting B
wait $SLEEP_PID wait $SLEEP_PID
echo done B
done done
quit 1 quit 1
) done