#!/bin/bash CONFIG_DIR="/lustre/fopi/skupny/batchworkspace/asyeosrootbatch/build/" OUTPUT_DIR="/lustre/fopi/skupny/2013-02_kratta_dst/indir/" INPTUT_DIR="/lustre/fopi/asyeos/MAY11/" MAX_JOBS_IN_BATCH=50 SLEEP_TIME=180 MEMORY_REQUEST="0.5" TIME_REQUEST="07:00:00" LOCALDIR=$PWD ROOT_MACRO_LOCATION="/lustre/fopi/skupny/batchworkspace/asyeosrootbatch/macros/kratta/unpack/lmd2root-dst_creator_0218/" ROOT_MACRO_NAME="unpack_kratta_lmd2root.C" LOGFILE=${LOCALDIR}"/log.log" FILE_LIST=( au400_1671.lmd au400_1672.lmd au400_1673.lmd au400_1674.lmd au400_1675.lmd ) INPUT_FILE_WITH_LIST_OF_FILES="" # 1. Checking input #echo "You launched this program with parameters:" if [ $# -eq 1 ] ; then INPUT_FILE_WITH_LIST_OF_FILES=$1 else echo "Error: One parameter needed. Call with filen which list of files to analyse" echo "Usage:" echo "$0 fileWithListFiles" exit fi FILE_RAW_LIST=`cat ${INPUT_FILE_WITH_LIST_OF_FILES}` FILE_LIST=($FILE_RAW_LIST) echo "There are ${#FILE_LIST[@]} files to process" ############################# WAIT FOR USER ############################### function WaitForUser(){ # Wait for checking by the user input parameters echo "Press [Enter] to continue... or break (press [Ctrl]+[C]) to stop now." read -p "" echo "So we are starting now! " } ############################# WAIT FOR USER ############################### function BuildScript(){ SCRIPT_NAME=$1 JOB_NAME="job_$4" echo "#$ -wd /tmp" > $SCRIPT_NAME echo "#$ -j y" >> $SCRIPT_NAME echo "# Name of this job" >> $SCRIPT_NAME echo "#$ -N $JOB_NAME" >> $SCRIPT_NAME echo "format='+%Y/%m/%d-%H:%M:%S'" >> $SCRIPT_NAME echo "echo \`date \$format\` Starting..." >> $SCRIPT_NAME echo "cd $CONFIG_DIR" >> $SCRIPT_NAME echo ". config.sh" >> $SCRIPT_NAME echo "cd $ROOT_MACRO_LOCATION" >> $SCRIPT_NAME echo "root -q -l -b \"$ROOT_MACRO_NAME (\\\"$2\\\", \\\"$3\\\")\" " >> $SCRIPT_NAME echo "echo \`date \$format\` ..finished" >> $SCRIPT_NAME echo "echo Done" >> $SCRIPT_NAME } ############################ MAIN COMMANDS ############################# FILE_LIST_LEN=${#FILE_LIST[@]} ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## i=0 JOBS_IN_BATCH=`qstat` while [ $i -lt $FILE_LIST_LEN ] do echo "Welcome ${FILE_LIST[$i]}" QSTAT_LINES=`qstat |wc -l ` JOBS_IN_BATCH=$(( $QSTAT_LINES - 2 )) # Because two lines are not from the jobs list echo "There is $JOBS_IN_BATCH jobs, your limit is $MAX_JOBS_IN_BATCH" if [ $JOBS_IN_BATCH -lt $MAX_JOBS_IN_BATCH ] then echo "Im adding new task" SCRIPT_TO_LAUNCH=$LOCALDIR/"batch_${FILE_LIST[$i]}.sh" BATCH_LOG_FILE=$LOCALDIR"/batch_${FILE_LIST[$i]}.log" touch $BATCH_LOG_FILE INPUTFILE=${INPTUT_DIR}/${FILE_LIST[$i]} #EXTENSION="${FILE##*.}" NEWFILE="${FILE_LIST[$i]%.*}_kratta.root" OUTPUTFILE=${OUTPUT_DIR}/${NEWFILE} BuildScript $SCRIPT_TO_LAUNCH $INPUTFILE $OUTPUTFILE $i echo "qsub -l mem=${MEMORY_REQUEST}G,ct=${TIME_REQUEST} -o $BATCH_LOG_FILE $SCRIPT_TO_LAUNCH" qsub -l mem=${MEMORY_REQUEST}G,ct=${TIME_REQUEST} -o $BATCH_LOG_FILE $SCRIPT_TO_LAUNCH #rm $SCRIPT_TO_LAUNCH i=$(( $i + 1)) sleep 1 else echo `date '+%Y/%m/%d-%H:%M:%S'` "Enough tasks im going to sleep for $SLEEP_TIME seconds." sleep $SLEEP_TIME fi done echo "Done" echo "Results are written to:" echo $OUTPUT_DIR ################################ END ###################################