function parametro() {
echo $1 | awk -F"=" '{ print $1 " " $2 }'
}
function doCalcScript () {
BINDIR="/home/clabaqus/bin/abaqus";
echo -e "#!/bin/bash \n " \
"PATH=\"/usr/bin:/bin:/usr/local/bin\" \n" \
"cd $1 && abaqus input=$2 job=$3 cpus=$4" > $BINDIR/S$3.sh;
chmod u+x $BINDIR/S$3.sh;
at $LASTJOBTIMEHUMAN -f $BINDIR/S$3.sh 2>&1
}
function doCalcKillScript () {
BINDIR="/home/clabaqus/bin/abaqus"
PROC=$(pgrep Python.exe)
SEEKANDDESTROY="if [ $PROC ]; then cd $1 && abaqus terminate job=$2;fi \n";
SENDCALCREPORT="cd $1 && cat $2.log | email -s \"[ABAQUS] Resultado del calculo\" $3";
echo -e "#!/bin/bash \n " \
"PATH=\"/usr/bin:/bin:/usr/local/bin\" \n " \
"$SEEKANDDESTROY $SENDCALCREPORT" > $BINDIR/K$2.sh;
chmod u+x $BINDIR/K$2.sh;
at $NEXTJOBTIMEDESTROY -f $BINDIR/K$2.sh 2>&1
}
WD=`pwd`
LASTJOBFILE="/home/clabaqus/bin/var/lastjob"
EPOCHTIME="1970-01-01"
echo "Programa para encolar problemas en ABAQUS"
echo ""
echo "Contacto: administrador_star.us.es"
echo "Version 0.4 Mayo 2009"
echo ""
for param in "$@"
do
miarray=(`parametro $param`)
if [ ${miarray[0]} == "input" ]; then
INPUT=${miarray[1]}
fi
if [ ${miarray[0]} == "job" ]; then
JOB=${miarray[1]}
fi
if [ ${miarray[0]} == "cpus" ]; then
CPUS=${miarray[1]}
fi
if [ ${miarray[0]} == "email" ]; then
EMAIL=${miarray[1]}
fi
if [ ${miarray[0]} == "time" ]; then
TIME=${miarray[1]}
fi
done
if [ "x$EMAIL" == "x" ]; then
echo "No se permiten trabajos sin responsable. EL TRABAJO NO SE HA ENVIADO.";
exit 1;
fi
if [ -e $LASTJOBFILE ]; then
LASTJOBTIME=`cat $LASTJOBFILE`;
else
LASTJOBTIME=`date +%s`;
fi
TIMEDESTROY=`expr $LASTJOBTIME + $TIME \* 3600` || exit 1
NEXTJOBTIMEDESTROY=`date +'%H%M %b %d' -d "$EPOCHTIME $TIMEDESTROY sec utc" `;
TIMESEC=`expr $LASTJOBTIME + $TIME \* 3600 + 300` || exit 1
NEXTJOBTIME=`date +'%H%M %b %d' -d "$EPOCHTIME $TIMESEC sec utc" `;
LASTJOBTIMEHUMAN=`date +'%H%M %b %d' -d "$EPOCHTIME $LASTJOBTIME sec utc" `;
doCalcScript $WD $INPUT $JOB $CPUS;
doCalcKillScript $WD $JOB $EMAIL;
echo $TIMESEC > $LASTJOBFILE
NANOSECOND=`date +%N`
TMPMAIL="/tmp/email$NANOSECOND"
JOBNUMBER=`atq | sort | tail -n 1 | cut -f1,2 -d" "`
TOTALJOBS=`atq | wc -l`
echo "Se ha enviado un nuevo trabajo a la cola" >> $TMPMAIL
echo "" >> $TMPMAIL
echo "Archivo de entrada : $INPUT" >> $TMPMAIL
echo "Nombre del trabajo : $JOB" >> $TMPMAIL
echo "Directorio de trabajo : $WD" >> $TMPMAIL
echo "Numero de CPUS : $CPUS" >> $TMPMAIL
echo "Numero de trabajo : $JOBNUMBER" >> $TMPMAIL
echo "Numero total de trabajos : $TOTALJOBS" >> $TMPMAIL
echo "Usuario responsable : $EMAIL" >> $TMPMAIL
echo "Planificado para las : $LASTJOBTIMEHUMAN" >> $TMPMAIL
cat $TMPMAIL | email -s "[ABAQUS-AT] Nuevo trabajo: $JOB" $EMAIL