Skip to content

Instantly share code, notes, and snippets.

@hiraksarkar
Created December 21, 2018 17:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiraksarkar/20285b7f565f0f6d7c8cdb467ffc7b16 to your computer and use it in GitHub Desktop.
Save hiraksarkar/20285b7f565f0f6d7c8cdb467ffc7b16 to your computer and use it in GitHub Desktop.
check queue for empty place and submit
#!/bin/bash
MAX_LIMIT=12
#number of things queue
#CHEKC IF it less than try submeating jobs
while : ; do
NUM_QUEUED=`qstat -u moamin | awk '$10 == "Q" { count++ } END {print count }'`
NUM_RUNNING=`qstat -u moamin | awk '$10 == "R" { count++ } END {print count }'`
MAX_RUNNING=`qstat -u moamin | awk '$10 == "R" { print $4 }' | cut -d"_" -f3 | sort -n | tail -1`
MAX_SUBMITTED=`qstat -u moamin | awk '$10 == "Q" { print $4 }' | cut -d"_" -f3 | sort -n | tail -1`
if ! [[ -z $MAX_RUNNING || -z $MAX_SUBMITTED ]]; then
MAX_SUB=$(( $MAX_RUNNING > MAX_SUBMITTED ? MAX_RUNNING : MAX_SUBMITTED ))
fi
if [ -z $NUM_QUEUED ];then
NUM_QUEUED=0
fi
if [ -z $MAX_RUNNING ];then
break
fi
let "TO_SUB = $MAX_LIMIT - $NUM_QUEUED"
if [[ $NUM_QUEUED -lt $MAX_LIMIT ]]; then
#echo "$MAX_SUB $TO_SUB";
MAX_SUB=$(echo $MAX_SUB | sed 's/^0*//')
echo "TO_SUB $TO_SUB";
let "MIN_SUB = $MAX_SUB + 1"
let "MAX_SUB = $MAX_SUB + $TO_SUB"
echo "MIN_SUB $MIN_SUB MAX_SUB $MAX_SUB ";
if [[ ${#MIN_SUB} -lt 3 ]];
then
MIN_SUB="0${MIN_SUB}"
fi
if [[ ${#MAX_SUB} -lt 3 ]];
then
MAX_SUB="0${MAX_SUB}"
fi
for i in `seq -w $MIN_SUB $MAX_SUB` ;
#do echo "$MIN_SUB $MAX_SUB ";
#echo "RUN $MAX_RUNNING SUB $MAX_SUBMITTED"
#echo "MAX_SUB $MAX_SUB"
do qsub experiment/JOB_seq_${i}.pbs;
done
if [ $MAX_SUB -eq 239 ]; then
break
fi
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment