814fb9399f
Aleksej Saushev. Dont use bash or bashism in shell scripts We should use Posix' setpgid(0,0), which is equivalent to setpgrp(). This commit was SVN r22829.
74 строки
1.8 KiB
Bash
Исполняемый файл
74 строки
1.8 KiB
Bash
Исполняемый файл
#!/bin/sh
|
|
# The purpose of this shell script is to extract the ALPS resId for the
|
|
# current batch job (under which we are running). Ideally, we would not
|
|
# relegate such a function to a script; rather, we would extract this
|
|
# value directly from the ALPS "reservations" file. However, we do not
|
|
# know the file structure used for the "reservations" file and this
|
|
# structure is not locally available. Then, in addition, we have the
|
|
# complication that as of the instantiation date of this script, the
|
|
# user command interface to ALPS is somewhat unreliable. So, to keep
|
|
# the load module fairly simple, we use this script.
|
|
|
|
APSTAT=/usr/bin/apstat
|
|
GREP=/usr/bin/grep
|
|
AWK=/usr/bin/awk
|
|
SLEEP=/bin/sleep
|
|
ECHO=/bin/echo
|
|
|
|
# If the old variable still is being set, use it.
|
|
if [ "${BATCH_PARTITION_ID}" != "" ]
|
|
then
|
|
${ECHO} ${BATCH_PARTITION_ID}
|
|
exit 0
|
|
fi
|
|
|
|
# Extract the batch job ID directly from the environment, if available.
|
|
jid=${BATCH_JOBID:--1}
|
|
if [ $jid -eq -1 ]
|
|
then
|
|
|
|
# Otherwise, parse it from the PBS/Torque environmental variable.
|
|
jid=${PBS_JOBID:--1}
|
|
if [ $jid = "-1" ]
|
|
then
|
|
${ECHO} -1
|
|
exit 0
|
|
fi
|
|
jid=`${ECHO} $jid | ${AWK} -F\. '{print $1}'`
|
|
fi
|
|
|
|
# Next, let the ALPS user command interface read the "reservations"
|
|
# file; but let's not be too hasty about reporting failure.
|
|
resId=""
|
|
count=0
|
|
while [ "$resId" = "" ]
|
|
do
|
|
|
|
# We're in a while loop, so skip the delay on the first trip.
|
|
if [ $count -gt 0 ]
|
|
then
|
|
${SLEEP} 1
|
|
fi
|
|
|
|
# Try to get the ALPS resId.
|
|
resId=`${APSTAT} -r | ${GREP} $jid | ${AWK} '{print $1}'`
|
|
|
|
# Give up after 10 tries.
|
|
count=`expr $count + 1 `
|
|
if [ $count -ge 10 ]
|
|
then
|
|
break
|
|
fi
|
|
done
|
|
|
|
# If we still don't have it after 10 attempts, then, I reckon that it
|
|
# just wasn't meant to be.
|
|
if [ "$resId" = "" ]
|
|
then
|
|
${ECHO} 2
|
|
exit 0
|
|
fi
|
|
|
|
${ECHO} $resId
|
|
exit 0
|