This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
computing:batch:jobscriptexample [2013/12/11 23:59] – ngadiuba | computing:batch:jobscriptexample [2016/09/16 01:37] – [Example 2] iwn | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== Example 1 ===== | ||
+ | |||
+ | <file text submitExample.sh> | ||
+ | |||
#!/bin/bash | #!/bin/bash | ||
################################# | ################################# | ||
Line 128: | Line 132: | ||
# our shared home | # our shared home | ||
scramv1 list > myout.txt 2> | scramv1 list > myout.txt 2> | ||
+ | | ||
lcg-ls -b -D srmv2 -l srm:// | lcg-ls -b -D srmv2 -l srm:// | ||
+ | | ||
# create a dummy file for copying back to the SE | # create a dummy file for copying back to the SE | ||
dd if=/ | dd if=/ | ||
+ | | ||
CMSSW_DIR=/ | CMSSW_DIR=/ | ||
CMSSW_CONFIG_FILE=$CMSSW_DIR/ | CMSSW_CONFIG_FILE=$CMSSW_DIR/ | ||
+ | | ||
cd $CMSSW_DIR/ | cd $CMSSW_DIR/ | ||
eval `scramv1 runtime -sh` | eval `scramv1 runtime -sh` | ||
Line 143: | Line 147: | ||
exit 1 | exit 1 | ||
fi | fi | ||
+ | | ||
cd $WORKDIR | cd $WORKDIR | ||
cmsRun $CMSSW_CONFIG_FILE maxEvents=$1 firstEvent=$2 inputFiles=$3 seed=$4> myout.txt 2> | cmsRun $CMSSW_CONFIG_FILE maxEvents=$1 firstEvent=$2 inputFiles=$3 seed=$4> myout.txt 2> | ||
+ | | ||
#### RETRIEVAL OF OUTPUT FILES AND CLEANING UP ############################ | #### RETRIEVAL OF OUTPUT FILES AND CLEANING UP ############################ | ||
cd $WORKDIR | cd $WORKDIR | ||
Line 158: | Line 162: | ||
echo "########################################################" | echo "########################################################" | ||
fi | fi | ||
+ | | ||
if test x" | if test x" | ||
mkdir -p $RESULTDIR | mkdir -p $RESULTDIR | ||
Line 203: | Line 207: | ||
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=" | ||
+ | HN_NAME=`whoami` | ||
+ | USER_SRM_HOME=" | ||
+ | SERESULTDIR=$USER_SRM_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 " | ||
+ | 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 | ||
+ | |||
+ | </ |