2016-09-03 13:21:27 +02:00
|
|
|
#! /bin/bash
|
|
|
|
IP=$1
|
|
|
|
PORT=$2
|
|
|
|
PROCS=$3
|
|
|
|
FILE=$4
|
|
|
|
PROCMAXTIME=60
|
|
|
|
|
|
|
|
MAINPID=$$
|
2016-09-03 19:40:19 +02:00
|
|
|
PGID=$(ps -o pgid= $MAINPID | grep -oe "[0-9]*")
|
2016-09-03 13:21:27 +02:00
|
|
|
|
|
|
|
do_exit() {
|
|
|
|
kill -9 -$PGID
|
|
|
|
}
|
|
|
|
trap do_exit SIGINT SIGTERM
|
|
|
|
|
|
|
|
for i in $(seq 0 $(($PROCS-1))); do
|
|
|
|
(
|
|
|
|
THISPID=$BASHPID
|
|
|
|
# ( while kill -0 $MAINPID; do sleep 1; done; do_exit ) &
|
|
|
|
while true; do
|
|
|
|
(
|
|
|
|
THISPID2=$BASHPID
|
|
|
|
( sleep $PROCMAXTIME; kill -9 $THISPID2 >/dev/null 2>&1 ) &
|
2016-09-03 19:40:19 +02:00
|
|
|
echo "starting $(($i+1)) / $PROCS"
|
|
|
|
( while kill -0 $THISPID2; do cat $FILE; done ) | nc $IP $PORT >/dev/null 2>&1
|
2016-09-03 13:21:27 +02:00
|
|
|
) >/dev/null 2>&1
|
|
|
|
done
|
|
|
|
) &
|
2016-09-03 19:40:19 +02:00
|
|
|
sleep $(echo "scale=2; ($PROCMAXTIME/$PROCS) + 1" | bc)
|
2016-09-03 13:21:27 +02:00
|
|
|
done
|
|
|
|
while true; do sleep 9999999; done
|