fradrive/utils/watchcontainerrun.sh

46 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
UTILPATH=${0%/*}
RUNNER="$1"
FILENAME="$2"
STARTSCRIPT="$3"
CLEANUPSCRIPT="$4"
TRIES=1
while ! grep -q 'CONTAINER_ID=' "$FILENAME" > /dev/null 2>/dev/null ; do
sleep 1
TRIES=$((1+$TRIES))
if [ "$TRIES" -ge 20 ] ; then
echo "$0: Containerfile $FILENAME did not show up after 20 seconds, giving up now!" >&2
exit
fi
done
sleep 1 # safety, we do not want to have half written container ids
CONTAINER_ID=`cat $FILENAME | grep 'CONTAINER_ID=' | sed 's/CONTAINER_ID=//'`
if echo "$CONTAINER_ID" | grep '\\n' > /dev/null ; then echo "Bad CONTAINER_ID (contains \\n), please check container file $FILENAME" ; fi
$STARTSCRIPT
while [ -e "$FILENAME" ] ; do
sleep 1
if ! $RUNNER ps --no-trunc | grep -q "$CONTAINER_ID" ; then
#rm "$FILENAME"
EXITED_FILENAME=`echo "$FILENAME" | sed 's/\([^\/]*\)$/.exited.\1/'`
mv "$FILENAME" "$EXITED_FILENAME"
exit
fi
inotifywait -e ATTRIB -t 10 "$FILENAME" > /dev/null 2>/dev/null
done
$RUNNER stop "$CONTAINER_ID" > /dev/null 2>/dev/null
$CLEANUPSCRIPT
#$UTILPATH/watchrun.sh "$FILENAME" "$STARTSCRIPT" "$CLEANUPSCRIPT"