add nextflow d30e48d
This commit is contained in:
41
nextflow/validation/await.sh
Executable file
41
nextflow/validation/await.sh
Executable file
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
|
||||
TIMEOUT=3600 # terminate after one hour
|
||||
KEEPALIVE=480 # time after which print an output to keep alive travis
|
||||
|
||||
# launch main command to await
|
||||
( "$@" | tee stdout.log ) &
|
||||
pid=$!
|
||||
|
||||
# make sure to terminate target command on exit
|
||||
trap "kill $pid" TERM INT USR1 USR2
|
||||
|
||||
# monitor task execution
|
||||
begin=$(date +%s)
|
||||
size=0
|
||||
while kill -0 $pid > /dev/null 2>&1; do
|
||||
sleep 1
|
||||
|
||||
# continue to await if there's a change
|
||||
# in the stdout file
|
||||
### BSD current=$(stat -f%z stdout.log)
|
||||
current=$(stat -c '%s' stdout.log)
|
||||
if [[ $current != $size ]]; then
|
||||
size=$current
|
||||
begin=$(date +%s)
|
||||
continue
|
||||
fi
|
||||
|
||||
# kill the execution if it's taking too
|
||||
# much time without producing any output
|
||||
now=$(date +%s)
|
||||
delta=$((now-begin))
|
||||
if ((delta>=$TIMEOUT)); then
|
||||
echo Taking too long ... killing it!
|
||||
kill $pid
|
||||
exit 1
|
||||
elif ((delta>=$KEEPALIVE)); then
|
||||
echo "[keep alive]"
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user