This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| computing:batch:jobscriptexample [2013/12/12 00:00] – ngadiuba | computing:batch:jobscriptexample [2017/06/07 20:59] (current) – iwn | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | Two examples of submission scripts to PSI's T3 batch system. | ||
| + | |||
| + | |||
| + | ===== Example 1 ===== | ||
| + | |||
| + | <file text submitExample.sh> | ||
| + | |||
| #!/bin/bash | #!/bin/bash | ||
| ################################# | ################################# | ||
| Line 203: | Line 210: | ||
| echo " | echo " | ||
| exit 0 | exit 0 | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Example 2 ===== | ||
| + | |||
| + | Trimmed version. | ||
| + | |||
| + | |||
| + | <file text submitExample2.sh> | ||
| + | |||
| + | #! /bin/bash | ||
| + | # https:// | ||
| + | # run with qsub -q all.q submitAnalysis.sh | ||
| + | |||
| + | printf "################################################### | ||
| + | printf "## | ||
| + | printf "################################################### | ||
| + | |||
| + | DBG=2 # debugging level | ||
| + | INPUT=$1; | ||
| + | JOBLOGFILES=" | ||
| + | OUTFILES=" | ||
| + | TOPWORKDIR=/ | ||
| + | JOBDIR=" | ||
| + | BASEDIR="/ | ||
| + | CMSSW_DIR="/ | ||
| + | |||
| + | WORKDIR=$TOPWORKDIR/ | ||
| + | OUTDIR=$BASEDIR/ | ||
| + | RESULTDIR=$BASEDIR/ | ||
| + | |||
| + | # to save large output files on storage element | ||
| + | SEUSERSUBDIR=" | ||
| + | SEOUTFILES=" | ||
| + | USER_SE_HOME=" | ||
| + | SERESULTDIR=$USER_SE_HOME/ | ||
| + | |||
| + | |||
| + | |||
| + | ##### MONITORING/ | ||
| + | |||
| + | # write job report (stdout of this script) | ||
| + | mkdir -p / | ||
| + | #$ -o / | ||
| + | #$ -e / | ||
| + | |||
| + | DATE_START=`date +%s` | ||
| + | echo "Job started at " `date` | ||
| + | cat <<EOF | ||
| + | |||
| + | ########################################### | ||
| + | ## | ||
| + | ########################################### | ||
| + | HOME=$HOME | ||
| + | USER=$USER | ||
| + | JOB_ID=$JOB_ID | ||
| + | JOB_NAME=$JOB_NAME | ||
| + | HOSTNAME=$HOSTNAME | ||
| + | TASK_ID=$TASK_ID | ||
| + | QUEUE=$QUEUE | ||
| + | EOF | ||
| + | |||
| + | if test 0" | ||
| + | echo " " | ||
| + | echo "###########################################" | ||
| + | echo "## | ||
| + | echo "###########################################" | ||
| + | env | ||
| + | fi | ||
| + | |||
| + | |||
| + | |||
| + | ##### SET ENVIRONMENT ##################################################### | ||
| + | |||
| + | mkdir -p $WORKDIR | ||
| + | if test ! -d " | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | cd $WORKDIR | ||
| + | |||
| + | cat <<EOF | ||
| + | |||
| + | ########################################### | ||
| + | ## JOB SETTINGS: | ||
| + | ########################################### | ||
| + | BASEDIR=$BASEDIR | ||
| + | WORKDIR=$WORKDIR | ||
| + | RESULTDIR=$RESULTDIR | ||
| + | SERESULTDIR=$SERESULTDIR | ||
| + | EOF | ||
| + | |||
| + | |||
| + | |||
| + | echo " " | ||
| + | echo "###########################################" | ||
| + | echo "## | ||
| + | echo "###########################################" | ||
| + | |||
| + | source $VO_CMS_SW_DIR/ | ||
| + | cd $CMSSW_DIR/ | ||
| + | eval `scramv1 runtime -sh` >> myout.txt 2>> myerr.txt | ||
| + | if test $? -ne 0; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | cd $WORKDIR | ||
| + | echo " | ||
| + | python $BASEDIR/ | ||
| + | ls >> myout.txt 2>> myerr.txt | ||
| + | |||
| + | |||
| + | |||
| + | ##### RETRIEVAL OF OUTPUT FILES AND CLEANING UP ########################### | ||
| + | |||
| + | cd $WORKDIR | ||
| + | if test 0" | ||
| + | echo " " | ||
| + | echo "###########################################################" | ||
| + | echo "## | ||
| + | echo "###########################################################" | ||
| + | echo " | ||
| + | echo " | ||
| + | echo "pwd: " `pwd` | ||
| + | ls -Rl | ||
| + | fi | ||
| + | |||
| + | # copy log files to $RESULTDIR | ||
| + | if test x" | ||
| + | mkdir -p $RESULTDIR | ||
| + | if test ! -e " | ||
| + | echo " | ||
| + | fi | ||
| + | for n in $JOBLOGFILES; | ||
| + | if test ! -e $WORKDIR/ | ||
| + | echo " | ||
| + | else | ||
| + | echo ">>> | ||
| + | cp -a $WORKDIR/$n $RESULTDIR/ | ||
| + | if test $? -ne 0; then | ||
| + | echo " | ||
| + | fi | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | |||
| + | # copy output files to $OUTDIR | ||
| + | if test x" | ||
| + | mkdir -p $OUTDIR | ||
| + | if test ! -e " | ||
| + | echo " | ||
| + | fi | ||
| + | for n in $OUTFILES; do | ||
| + | if test ! -e $WORKDIR/ | ||
| + | echo " | ||
| + | else | ||
| + | echo ">>> | ||
| + | cp -a $WORKDIR/$n $OUTDIR/$n | ||
| + | if test $? -ne 0; then | ||
| + | echo " | ||
| + | fi | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | |||
| + | |||
| + | # copy large files to $SERESULTDIR | ||
| + | if test x" | ||
| + | if test ! -e " | ||
| + | echo " | ||
| + | fi | ||
| + | if test 0" | ||
| + | srmdebug=" | ||
| + | fi | ||
| + | for n in $SEOUTFILES; | ||
| + | if test ! -e $WORKDIR/ | ||
| + | echo " | ||
| + | else | ||
| + | echo "xrdcp -f $WORKDIR/$n $SERESULTDIR/ | ||
| + | xrdcp $srmdebug -d $DBG -f $WORKDIR/$n $SERESULTDIR/ | ||
| + | if test $? -ne 0; then | ||
| + | echo " | ||
| + | fi | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | |||
| + | # cleaning working directory | ||
| + | echo ">>> | ||
| + | rm -rf $WORKDIR | ||
| + | |||
| + | |||
| + | |||
| + | ########################################################################### | ||
| + | |||
| + | DATE_END=`date +%s` | ||
| + | RUNTIME=$((DATE_END-DATE_START)) | ||
| + | echo " " | ||
| + | echo "#####################################################" | ||
| + | echo " | ||
| + | echo " | ||
| + | echo "#####################################################" | ||
| + | echo " " | ||
| + | exit 0 | ||
| + | |||
| + | </ | ||