#!/bin/bash
#PBS -S /bin/sh
#PBS -l @@{ATTRIBUTES}
#PBS -l walltime=@@{WALLTIME}
#PBS -N JOB_@@{JOBID}_@@{INSTANCEID}
#PBS -o pbs_@@{RUNNAME}_@@{INSTANCEID}_@@{CLUSTERID}.stdout
#PBS -e pbs_@@{RUNNAME}_@@{INSTANCEID}_@@{CLUSTERID}.stderr
#PBS -mn
@@{REMOTEBATCHACCOUNT}
@@{QUEUE}
@@{SUBMISSIONSCRIPTCOMMANDS}

@@{ENVIRONMENT}

# ExecutePBS:makeSerialTemplate
# SubmissionScripts/Distributor/Batch/PBS/pegasusserial

trap cleanup HUP INT QUIT ABRT TERM

cleanup()
{
   echo "Abnormal termination by signal"
   if [ ! -s @@{TS_FINISH} ] ; then
      date +"%s" > @@{TS_FINISH}
   fi
   if [ ! -s @@{TIME_RESULTS} ] ; then
      cat > @@{TIME_RESULTS} << EOF
Command terminated by signal 3
real 0.00
user 0.00
sys 0.00
EOF
   fi
   exit 1
}

export PATH=${PBS_O_WORKDIR}:${PBS_O_PATH}
# Change to directory where job was submitted.
cd ${PBS_O_WORKDIR}

date +"%s" > @@{TS_START}

@@{PREMANAGERCOMMANDS}
TIMEPATH=
if [ -n "@@{TIMEPATHS}" ] ; then
   for timePath in @@{TIMEPATHS} ; do
      if [ -x ${timePath} ] ; then
         TIMEPATH=${timePath}
         break
      fi
   done
fi

if [ -n "${TIMEPATH}" ] ; then
   ${TIMEPATH} --format "Command exited with status %x\nreal %e\nuser %U\nsys %S" -o @@{TIME_RESULTS} \
      @@{EXECUTABLE} @@{ARGUMENTS}  < @@{STDIN} \
                                    > @@{STDOUT} \
                                   2> @@{STDERR}
else
   { time -p @@{EXECUTABLE} @@{ARGUMENTS}  < @@{STDIN} \
                                           > @@{STDOUT} \
                                          2> @@{STDERR} ; } \
                 > @@{TIME_RESULTS} 2>&1
   echo "Command exited with status $?" >> @@{TIME_RESULTS}
fi
@@{POSTMANAGERCOMMANDS}

date +"%s" > @@{TS_FINISH}
