diff --git a/scripts/killall-bochs.sh b/scripts/killall-bochs.sh new file mode 100755 index 00000000..7ddb7927 --- /dev/null +++ b/scripts/killall-bochs.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# killall-bochs.sh +# Kills all remaining FailBochs instances on $FAIL_EXPERIMENT_HOSTS. +# +# Prerequisites: +# - (possibly overridden) env variables from fail-env.sh +# +# FIXME: unify with runcampaign.sh + +set -e +# determine absolute path of this script +SCRIPTDIR=$(readlink -f $(dirname $0)) +# env variable defaults +source $SCRIPTDIR/fail-env.sh + +CMD="killall -q client.sh" +SSH='ssh -o BatchMode=yes -o ConnectTimeout=60' +CONNECTION_ATTEMPTS=2 + +for h in $FAIL_EXPERIMENT_HOSTS +do + if [[ $h == *:* ]] + then + # split in host:nclients + NCLIENTS=${h#*:} + h=${h%:*} + else + NCLIENTS= + fi + + ( + for i in $(seq $CONNECTION_ATTEMPTS) + do + $SSH $h "$CMD" && break + # failed? sleep 1-10s and retry. + sleep $(($RANDOM / (32768 / 10) + 1)) + echo retrying $h ... + done + ) & +done