exectime
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France
exectime
does anyone had made a job scanning the AJF in cyclic mode and extracting jobs whoses execution time is > to a range time ?
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France
Hi have made a script that run the following query:
set pagesize 0;
set linesize 9999;
set head off;
set echo off;
set feed off;
select jobname, nodeid, applgroup, schedtab, startrun
from cmr_ajf
where state like '4' and startrun<to_char(SYSDATE-2,'yyyymmddhh24miss');
exit;
This query return the jobs in running status older than two days.
I hope this can help you
set pagesize 0;
set linesize 9999;
set head off;
set echo off;
set feed off;
select jobname, nodeid, applgroup, schedtab, startrun
from cmr_ajf
where state like '4' and startrun<to_char(SYSDATE-2,'yyyymmddhh24miss');
exit;
This query return the jobs in running status older than two days.
I hope this can help you
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France
finally i've made somethink like that :
#!/bin/ksh
tmp="/tmp/tmp.$$"
tmp2="/tmp/ResultatExectime-`date '+%d%m%Y'`-`date '+%H%M'`.txt"
touch ${tmp2}
cd $HOME
# 1. ODATE
# 2. PREVDATE
ODATE=${1}
PREVDATE=${2}
ctmpsm -LISTALL TIME | grep "${ODATE} Executin" > ${tmp}
if [ -s ${tmp} ]
then
cat ${tmp} | while read line
do
ORDERID=`echo ${line} | awk '{print $1}'`
JOBNAME=`echo ${line} | awk '{print $2}'`
STARTRUN=`echo ${line} | awk '{print $6}'`
VALRUNH=`echo ${STARTRUN} | nawk '{print (substr($0,9,2))}'`
VALRUNM=`echo ${STARTRUN} | nawk '{print (substr($0,11,2))}'`
VALRUNS=`echo ${STARTRUN} | nawk '{print (substr($0,13,2))}'`
nbRUNH=`expr ${VALRUNH} \* 3600`
nbRUNM=`expr ${VALRUNM} \* 60`
nbSTART=`expr ${nbRUNH} + ${nbRUNM} + ${VALRUNS}`
VALDATEH=`date '+%H'`
VALDATEM=`date '+%M'`
VALDATES=`date '+%S'`
nbDATEH=`expr ${VALDATEH} \* 3600`
nbDATEM=`expr ${VALDATEM} \* 60`
nbCURRENT=`expr ${nbDATEH} + ${nbDATEM} + ${VALDATES}`
EVAL=`expr ${nbCURRENT} - ${nbSTART}`
if [ ${EVAL} -le 3600 ]
then
DUREEH=0
DUREEM=`expr ${EVAL} / 60`
DUREES=`expr ${EVAL} % 60`
else
DUREEH=`expr ${EVAL} / 3600`
a2=`expr ${EVAL} % 3600`
DUREEM=`expr ${a2} / 60`
DUREES=`expr ${a2} % 60`
fi
MOY=`ctmruninf -list ${PREVDATE}100000 ${ODATE}100000 -JOBNAME ${JOBNAME} -total | grep "Total "`
VERIF=`echo ${MOY} | awk '{print $5}'`
if [ ${VERIF} -gt 0 ]
then
TOTHITS=`echo ${MOY} | awk '{print $7}' | awk -F"." '{print $1}'`
NBREHITS=`echo ${MOY} | awk '{print $5}'`
STATSHITS=`expr ${TOTHITS} / ${NBREHITS}`
STATH=`expr ${STATSHITS} / 3600`
b1=`expr ${STATSHITS} % 3600`
STATM=`expr ${b1} / 60`
STATS=`expr ${b1} % 60`
b2=`expr ${STATSHITS} / 10`
b3=`expr ${b2} \* 5`
STATSMAX=`expr ${STATSHITS} + ${b3}`
MAXH=`expr ${STATSMAX} / 3600`
b4=`expr ${STATSMAX} % 3600`
MAXM=`expr ${b4} / 60`
MAXS=`expr ${b4} % 60`
if [ ${EVAL} -gt ${STATSMAX} ]
then
echo !!!============================================================== >> ${tmp2}
echo "JOB ${JOBNAME}" >> ${tmp2}
echo "ORDERID : ${ORDERID}" >> ${tmp2}
echo "Duree Effective : ${DUREEH}:${DUREEM}:${DUREES}" >> ${tmp2}
echo "VOIR POURQUOI" >> ${tmp2}
echo ==============================================================!!! >> ${tmp2}
fi
else
echo >> ${tmp2}
echo "JOBNAME : ${JOBNAME} ORDERID : ${ORDERID}" >> ${tmp2}
echo "Pas de Stats pour ce job" >> ${tmp2}
echo >> ${tmp2}
continue
fi
echo ---------------------------------------------------------------
echo "ORDERID : ${ORDERID}"
echo "JOBNAME : ${JOBNAME}"
echo "HEURE DEMARRAGE : ${VALRUNH}:${VALRUNM}:${VALRUNS}"
echo "HEURE COURANTE : ${VALDATEH}:${VALDATEM}:${VALDATES}"
echo "Duree Effective : ${DUREEH}:${DUREEM}:${DUREES}"
echo "Statistiques du job : ${STATH}:${STATM}:${STATS}"
echo "Statistiques Max du job : ${MAXH}:${MAXM}:${MAXS}"
echo ---------------------------------------------------------------
done
else
echo ---------------------------------------------------------------
echo "PAS DE JOBS RUNING A `date '+%H-%M-%S'`"
echo ---------------------------------------------------------------
fi
rm ${tmp}
cat ${tmp2} | mailx -s "SCAN EXECTIME > 150 % de la moyenne des stats du job" -r philippe.valette@sgam.com philippe.vale
tte@sgam.com
it's working, but just have to resolve jobs beginning before 00:00:00 and ending after by spliting calculation before after and doing the sum
#!/bin/ksh
tmp="/tmp/tmp.$$"
tmp2="/tmp/ResultatExectime-`date '+%d%m%Y'`-`date '+%H%M'`.txt"
touch ${tmp2}
cd $HOME
# 1. ODATE
# 2. PREVDATE
ODATE=${1}
PREVDATE=${2}
ctmpsm -LISTALL TIME | grep "${ODATE} Executin" > ${tmp}
if [ -s ${tmp} ]
then
cat ${tmp} | while read line
do
ORDERID=`echo ${line} | awk '{print $1}'`
JOBNAME=`echo ${line} | awk '{print $2}'`
STARTRUN=`echo ${line} | awk '{print $6}'`
VALRUNH=`echo ${STARTRUN} | nawk '{print (substr($0,9,2))}'`
VALRUNM=`echo ${STARTRUN} | nawk '{print (substr($0,11,2))}'`
VALRUNS=`echo ${STARTRUN} | nawk '{print (substr($0,13,2))}'`
nbRUNH=`expr ${VALRUNH} \* 3600`
nbRUNM=`expr ${VALRUNM} \* 60`
nbSTART=`expr ${nbRUNH} + ${nbRUNM} + ${VALRUNS}`
VALDATEH=`date '+%H'`
VALDATEM=`date '+%M'`
VALDATES=`date '+%S'`
nbDATEH=`expr ${VALDATEH} \* 3600`
nbDATEM=`expr ${VALDATEM} \* 60`
nbCURRENT=`expr ${nbDATEH} + ${nbDATEM} + ${VALDATES}`
EVAL=`expr ${nbCURRENT} - ${nbSTART}`
if [ ${EVAL} -le 3600 ]
then
DUREEH=0
DUREEM=`expr ${EVAL} / 60`
DUREES=`expr ${EVAL} % 60`
else
DUREEH=`expr ${EVAL} / 3600`
a2=`expr ${EVAL} % 3600`
DUREEM=`expr ${a2} / 60`
DUREES=`expr ${a2} % 60`
fi
MOY=`ctmruninf -list ${PREVDATE}100000 ${ODATE}100000 -JOBNAME ${JOBNAME} -total | grep "Total "`
VERIF=`echo ${MOY} | awk '{print $5}'`
if [ ${VERIF} -gt 0 ]
then
TOTHITS=`echo ${MOY} | awk '{print $7}' | awk -F"." '{print $1}'`
NBREHITS=`echo ${MOY} | awk '{print $5}'`
STATSHITS=`expr ${TOTHITS} / ${NBREHITS}`
STATH=`expr ${STATSHITS} / 3600`
b1=`expr ${STATSHITS} % 3600`
STATM=`expr ${b1} / 60`
STATS=`expr ${b1} % 60`
b2=`expr ${STATSHITS} / 10`
b3=`expr ${b2} \* 5`
STATSMAX=`expr ${STATSHITS} + ${b3}`
MAXH=`expr ${STATSMAX} / 3600`
b4=`expr ${STATSMAX} % 3600`
MAXM=`expr ${b4} / 60`
MAXS=`expr ${b4} % 60`
if [ ${EVAL} -gt ${STATSMAX} ]
then
echo !!!============================================================== >> ${tmp2}
echo "JOB ${JOBNAME}" >> ${tmp2}
echo "ORDERID : ${ORDERID}" >> ${tmp2}
echo "Duree Effective : ${DUREEH}:${DUREEM}:${DUREES}" >> ${tmp2}
echo "VOIR POURQUOI" >> ${tmp2}
echo ==============================================================!!! >> ${tmp2}
fi
else
echo >> ${tmp2}
echo "JOBNAME : ${JOBNAME} ORDERID : ${ORDERID}" >> ${tmp2}
echo "Pas de Stats pour ce job" >> ${tmp2}
echo >> ${tmp2}
continue
fi
echo ---------------------------------------------------------------
echo "ORDERID : ${ORDERID}"
echo "JOBNAME : ${JOBNAME}"
echo "HEURE DEMARRAGE : ${VALRUNH}:${VALRUNM}:${VALRUNS}"
echo "HEURE COURANTE : ${VALDATEH}:${VALDATEM}:${VALDATES}"
echo "Duree Effective : ${DUREEH}:${DUREEM}:${DUREES}"
echo "Statistiques du job : ${STATH}:${STATM}:${STATS}"
echo "Statistiques Max du job : ${MAXH}:${MAXM}:${MAXS}"
echo ---------------------------------------------------------------
done
else
echo ---------------------------------------------------------------
echo "PAS DE JOBS RUNING A `date '+%H-%M-%S'`"
echo ---------------------------------------------------------------
fi
rm ${tmp}
cat ${tmp2} | mailx -s "SCAN EXECTIME > 150 % de la moyenne des stats du job" -r philippe.valette@sgam.com philippe.vale
tte@sgam.com
it's working, but just have to resolve jobs beginning before 00:00:00 and ending after by spliting calculation before after and doing the sum
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France
- philmalmaison
- Nouveau
- Posts: 1148
- Joined: 08 Jun 2007 12:00
- Location: Ile de France