Changeset 952
- Timestamp:
- 09/30/13 11:56:24 (11 years ago)
- Location:
- trunk/libIGCM
- Files:
-
- 2 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libIGCM/AA_RunChecker
r906 r952 16 16 17 17 18 function ChangeUsr {19 20 CurrentGrp=$( groups $CurrentUsr | gawk '{print $3}' )21 TargetGrp=$( groups $TargetUsr | gawk '{print $3}' )22 23 echo $1 | sed -e "s/${CurrentUsr}/${TargetUsr}/" \24 -e "s/${CurrentGrp}/${TargetGrp}/"25 26 }27 28 29 function SearchCatalog {30 31 typeset num32 unset SUBMIT_DIR33 34 fg_new=false35 36 if [ ! X${JobName} == X ] ; then37 NbOcc=$( gawk -v JobName=${JobName} \38 'BEGIN {x=0} $1 ~ JobName {++x} END {print x}' ${SimuCatalog} )39 else40 NbOcc=041 fi42 43 if ( [ ${NbOcc} -eq 0 ] && ( ${fg_path} ) ) ; then44 set -A FileList $( ls ${ConfigPath}/Job_* )45 if [ X$FileList == X ] ; then46 NbOcc=047 else48 NbOcc=${#FileList[@]}49 fg_new=true50 fi51 fi52 53 if ( [ ${NbOcc} -eq 0 ] && ( ${fg_search} ) ) ; then54 SEARCH_DIR=${WORKDIR}55 if [ ${TargetUsr} != ${CurrentUsr} ] ; then56 SEARCH_DIR=$( ChangeUsr ${SEARCH_DIR})57 fi58 echo "${JobName} not in Catalog, we'll try to find it in ${SEARCH_DIR}"59 60 set -A FileList $( find ${SEARCH_DIR}/ \61 -path ${SEARCH_DIR}/IGCM_OUT -prune -o \62 -name Job_${JobName} -print )63 if [ X$FileList == X ] ; then64 NbOcc=065 else66 NbOcc=${#FileList[@]}67 fg_new=true68 fi69 fi70 71 if [ ${NbOcc} -gt 1 ] ; then72 echo "More than one job"73 ind=074 while [ ${ind} -lt ${NbOcc} ] ; do75 printf '%2i) %-30s\n' ${ind} ${FileList[${ind}]}76 (( ind = ind + 1 ))77 done78 echo "Give your choice number or 'q' to quit : "79 read Choice80 if [ X${Choice} == Xq ] ; then81 exit82 else83 fg_new=true84 FileList=${FileList[${Choice}]}85 NbOcc=186 fi87 fi88 89 case ${NbOcc} in90 0)91 echo "${JobName} not found."92 echo "You can try : *) '-s' option to automatically search your \$WORKDIR ; "93 echo " *) '-p' option to provide the directory (absolute path) "94 echo " containing the config.card ; "95 echo " *) manually editing your ${SimuCatalog}."96 exit ;;97 1)98 if ( ${fg_new} ) ; then99 JobName=${JobName:=$( basename ${FileList} | gawk -F"_" '{ print $2 }' )}100 SUBMIT_DIR=$( dirname ${FileList} )101 echo "${JobName} ${TargetUsr} ${HostName} ${SUBMIT_DIR}"102 echo "${JobName} ${TargetUsr} ${HostName} ${SUBMIT_DIR}" >> ${SimuCatalog}103 sort -u ${SimuCatalog} > ${SimuCatalog}.tmp104 mv ${SimuCatalog}.tmp ${SimuCatalog}105 elif ( [ ${TargetUsr} == $( gawk -v JobName=${JobName} \106 '$1 ~ JobName {print $2}' \107 ${SimuCatalog} ) ] \108 && [ ${HostName} == $( gawk -v JobName=${JobName} \109 '$1 ~ JobName {print $3}' \110 ${SimuCatalog} ) ] ) ; then111 JobName=$( gawk -v JobName=${JobName} '$1 ~ JobName {print $1}' ${SimuCatalog} )112 SUBMIT_DIR=$( gawk -v JobName=${JobName} '$1 ~ JobName {print $4}' ${SimuCatalog} )113 else114 echo "${JobName} not in Catalog."115 exit116 fi117 ;;118 *)119 break ;;120 esac121 122 return123 124 }125 126 127 function AffichResult {128 129 fg_first=false130 fg_last=false131 fg_job=false132 133 while [ $# -ne 0 ] ; do134 case ${1} in135 -f|--first)136 fg_first=true137 shift 1 ;;138 -l|--last)139 fg_last=true140 shift 1 ;;141 -j|--job)142 fg_job=true143 shift 1 ;;144 -*)145 echo "usage: ${0}"146 echo " options = -f; -l"147 exit ;;148 *)149 break ;;150 esac151 done152 153 154 # Define colors155 # =============156 ColEsc="\033["157 ColNon="${ColEsc}0m" # Return to normal158 ColExp="${ColEsc}1m" # Blanc - gras159 ColFat="${ColEsc}1;31m" # Fatal160 ColCpl="${ColEsc}1;32m" # Completed161 ColAtt="${ColEsc}1;30m" # Waiting162 ColDef="${ColEsc}1;34m" # Default163 ColRbl="${ColEsc}31m" # Rebuild164 165 166 167 #Â Print header168 # ============169 if ( ${fg_first} ) ; then170 Dum=""171 (( len = 67 - ${#JobName} ))172 echo "|===========================================================================================================|"173 printf "| JobName = ${ColExp}%-${#JobName}s${ColNon}" ${JobName}174 printf "%-${len}s" ${Dum}175 printf "run.card : ${ColExp}%-18s${ColNon}|\n" "${LastWrite}"176 echo "|-------------------------|-------------|-------------------------|-------------|-----:----------:----------|"177 echo "| | | | | Pending Rebuilds |"178 echo "| Date Begin - DateEnd | PeriodState | Current Period | CumulPeriod | Nb : from : to |"179 echo "|-------------------------|-------------|-------------------------|-------------|-----:----------:----------|"180 181 printf "| %-10s - %-10s | " \182 $DateBegin $DateEnd183 184 case $PeriodState in185 Fatal)186 Color=${ColFat}187 ;;188 Completed)189 Color=${ColCpl}190 ;;191 Waiting|OnQueue)192 Color=${ColAtt}193 ;;194 *)195 Color=${ColDef}196 ;;197 esac198 printf "${Color}%-11s${ColNon} | " $PeriodState199 200 printf "%-10s - %-10s | %11s | " \201 $PeriodDateBegin $PeriodDateEnd $CumulPeriod202 203 if ( [ X${NbRebuild} != X. ] && [ X${NbRebuild} != X0 ] ) ; then204 printf "${ColRbl}%3s : %-8s : %-8s${ColNon} |\n" \205 $NbRebuild $FirstRebuild $LastRebuild206 else207 printf "%3s : %-8s : %-8s |\n" \208 $NbRebuild $FirstRebuild $LastRebuild209 fi210 211 if [ ${NbLines} -gt 0 ] ; then212 printf "|-----------------------------------------------------------------------------------------------------------|\n"213 printf "| Last |\n"214 printf "| Rebuild | Pack_Output | Pack_Restart | Pack_Debug | Monitoring | Atlas |\n"215 printf "|------------------|------------------|------------------|------------------|--------------|----------------|\n"216 fi217 218 return219 fi220 221 # Print Post-processing job status222 # ================================223 if ( ${fg_job} ) ; then224 printf "|"225 226 #Â Print rebuild and pack jobs227 #Â ---------------------------228 for JobType in ${JobType_list[*]} ; do229 eval Date=\${${JobType}_Date[${ind}]}230 eval Status=\${${JobType}_Status[${ind}]}231 eval Nb=\${${JobType}_Nb[${ind}]}232 233 if [ X${Status} == XOK ] ; then234 Color=${ColCpl}235 else236 Color=${ColFat}237 fi238 printf " ${Color}%-8s${ColNon} : %3s |" ${Date} ${Nb}239 done240 241 Color=${ColExp}242 243 #Â Print monitoring jobs244 #Â ---------------------245 JobType=monitoring246 if [ $ind -eq 0 ] ; then247 eval Date=\${${JobType}_Date}248 else249 Date=""250 fi251 printf " ${Color}%-4s${ColNon} |" ${Date}252 253 #Â Print atlas jobs254 #Â ----------------255 JobType=atlas256 eval Date=\${${JobType}_Date[${ind}]}257 printf " ${Color}%-12s${ColNon} |" ${Date}258 259 printf "\n"260 261 return262 fi263 264 #Â Print footer265 #Â ============266 if ( ${fg_last} ) ; then267 printf "|===========================================================================================================|\n"268 date +"${DateFormat}"269 return270 fi271 272 }273 18 274 19 #======================================================================# … … 364 109 #------- 365 110 . ${libIGCM}/libIGCM_sys/libIGCM_sys.ksh 111 . ${libIGCM}/libIGCM_check/libIGCM_check.ksh 366 112 . ${libIGCM}/libIGCM_config/libIGCM_config.ksh 367 113 #------- … … 370 116 ( ${DEBUG_debug} ) && IGCM_date_Check 371 117 118 372 119 JobName=$1 373 120 … … 376 123 fi 377 124 378 echo "Target user = ${TargetUsr}"379 380 125 # Define the catalog in which the known simulations are stored 126 # ============================================================ 381 127 SimuCatalog="${HOME}/.simucatalog.dat" 382 128 if [ ! -s ${SimuCatalog} ] ; then … … 384 130 fi 385 131 386 # Date format387 DateFormat="%d/%m/%y %R:%S"388 389 132 # Find SUBMIT_DIR in catalog 390 133 # ========================== 391 SearchCatalog134 IGCM_check_SearchCatalog 392 135 393 136 if [ ! X${SUBMIT_DIR} == X ] ; then 394 137 395 echo "Submit: >${SUBMIT_DIR}<"396 138 IGCM_sys_Cd $SUBMIT_DIR 397 139 … … 404 146 405 147 IGCM_config_CommonConfiguration ${SUBMIT_DIR}/config.card 148 IGCM_check_CommonDef 406 149 407 150 … … 445 188 POST_DIR=${R_BUFR}/Out 446 189 CWORK_DIR=${R_FIGR} 447 if [ X${config_Post_RebuildFromArchive} = Xtrue ] ; then448 RebuildJob="rebuild_fromArchive"449 else450 RebuildJob="rebuild_fromWorkdir"451 fi452 190 453 191 if [ ${TargetUsr} != ${CurrentUsr} ] ; then 454 DATA_DIR=$( ChangeUsr ${DATA_DIR}) 455 POST_DIR=$( ChangeUsr ${POST_DIR} ) 456 CWORK_DIR=$( ChangeUsr ${CWORK_DIR} ) 457 REBUILD_DIR=$( ChangeUsr ${REBUILD_DIR} ) 458 fi 459 460 echo "Data: >${DATA_DIR}<" 461 echo "Rebuild: >${REBUILD_DIR}<" 462 echo "Post: >${POST_DIR}<" 463 echo "Work: >${CWORK_DIR}<" 464 465 # Are packs activated or not ? 466 # ============================ 467 if ( [ ! X${config_Post_PackFrequency} = X${NULL_STR} ] && \ 468 [ ! X${config_Post_PackFrequency} = XNONE ] ) ; then 469 Pack=true 470 else 471 Pack=false 472 fi 473 192 DATA_DIR=$( IGCM_check_ChangeUsr ${DATA_DIR} ) 193 POST_DIR=$( IGCM_check_ChangeUsr ${POST_DIR} ) 194 CWORK_DIR=$( IGCM_check_ChangeUsr ${CWORK_DIR} ) 195 REBUILD_DIR=$( IGCM_check_ChangeUsr ${REBUILD_DIR} ) 196 fi 474 197 475 198 if [ $PeriodState != "Waiting" ] ; then 476 477 # Check pending rebuilds 199 # Check pending REBUILDS 478 200 # ====================== 479 480 set -A RebuildList $( find ${REBUILD_DIR}/ -name "REBUILD_*" | sort ) 481 if [ ${#RebuildList[*]} -gt 0 ] ; then 482 NbRebuild=$( IGCM_sys_CountFileArchive ${REBUILD_DIR} ) 483 484 FirstRebuild=$( basename ${RebuildList[0]} | cut -f2 -d\_ ) 485 LastRebuild=$( basename ${RebuildList[ (( NbRebuild=${NbRebuild}-1 )) ]} | cut -f2 -d\_ ) 486 else 487 NbRebuild="." 488 489 FirstRebuild="." 490 LastRebuild="." 491 fi 492 else 493 NbRebuild="." 494 495 FirstRebuild="." 496 LastRebuild="." 497 fi 498 499 500 if [ $PeriodState != "Waiting" ] ; then 201 IGCM_check_CheckPendingRebuild 501 202 502 203 # Check last REBUILD and PACK* jobs 503 204 # ================================= 504 # Define input parameters 505 # ----------------------- 506 set -A JobType_list "${RebuildJob}" "pack_output" "pack_restart" "pack_debug" 507 508 for JobType in ${JobType_list[*]} ; do 509 typeset name1="${JobType}_String" 510 typeset name2="${JobType}_Field" 511 typeset name3="${JobType}_Activ" 512 if [ X${JobType} == X${RebuildJob} ] ; then 513 if ( ${Pack} ) ; then 514 eval ${name1}=IGCM_sys_PutBuffer_Out 515 else 516 eval ${name1}=IGCM_sys_Put_Out 517 fi 518 eval ${name2}=4 519 eval ${name3}=true 520 else 521 eval ${name1}=IGCM_sys_Put_Out 522 eval ${name2}=3 523 if ( ${Pack} ) ; then 524 eval ${name3}=true 525 else 526 eval ${name3}=false 527 fi 528 fi 529 done 530 531 #Â Check jobs 532 # ---------- 533 NbLines=0 534 for JobType in ${JobType_list[*]} ; do 535 eval String=\${${JobType}_String} 536 eval Field=\${${JobType}_Field} 537 eval Activ=\${${JobType}_Activ} 538 539 if ( ${Activ} ) ; then 540 541 set -A FileList $( ls ${POST_DIR}/${JobType}.*.out | tail -n ${NbHisto} ) 542 543 if [ ${#FileList[*]} -gt ${NbLines} ] ; then 544 NbLines=${#FileList[*]} 545 fi 546 547 (( ind = 0 )) 548 for FileName in ${FileList[*]} ; do 549 LastDate="" 550 LastDate=$( basename ${FileName} | gawk -F"." '{ print $(NF-1) }' ) 551 552 set -- $( gawk -v String=${String} \ 553 'BEGIN { nb_ok = 0 ; nb_ko = 0 } \ 554 ($1 ~ String) { \ 555 if ($3 !~ /error./) { \ 556 nb_ok = nb_ok + 1 \ 557 } else { \ 558 nb_ko = nb_ko + 1 \ 559 } \ 560 } \ 561 END { print nb_ok " " nb_ko }' \ 562 ${POST_DIR}/${JobType}.${LastDate}.out ) 563 Match=$1 564 Error=$2 565 566 (( Nb = ${Match} - ${Error} )) 567 568 if ( [ ${Error} -eq 0 ] && [ ${Nb} -gt 0 ] ) ; then 569 Status=OK 570 else 571 Status=KO 572 fi 573 574 eval ${JobType}_Date[$ind]=${LastDate} 575 eval ${JobType}_Status[$ind]=${Status} 576 eval ${JobType}_Nb[$ind]=${Nb} 577 578 (( ind = ind + 1 )) 579 done 580 581 else 582 583 eval ${JobType}_Date[0]="" 584 eval ${JobType}_Status[0]="" 585 eval ${JobType}_Nb[0]="" 586 587 fi 588 589 done 205 IGCM_check_CheckRebPackJobs 590 206 591 207 # Check last MONITORING jobs 592 208 # ========================== 593 LastDate="" 594 JobType=monitoring 595 IGCM_sys_TestDirArchive ${CWORK_DIR}/MONITORING 596 RC=$? 597 if [ $RC == 0 ] ; then 598 FileTmp=$( IGCM_sys_RshArchive "ls ${CWORK_DIR}/MONITORING/files/*.nc | head -n 1" ) 599 IGCM_sys_GetDate_Monitoring ${FileTmp} LastDate 600 eval ${JobType}_Date=${LastDate} 601 fi 209 IGCM_check_CheckMonitoring 602 210 603 211 # Check last ATLAS jobs 604 212 # ===================== 605 JobType=atlas 606 IGCM_sys_TestDirArchive ${CWORK_DIR}/ATLAS 607 RC=$? 608 if [ $RC == 0 ] ; then 609 set -A FileList $( IGCM_sys_RshArchive "ls ${CWORK_DIR}/ATLAS | tail -n ${NbHisto}" ) 610 611 if [ ${#FileList[*]} -gt ${NbLines} ] ; then 612 NbLines=${#FileList[*]} 613 fi 614 615 (( ind = 0 )) 616 for FileName in ${FileList[*]} ; do 617 eval ${JobType}_Date[$ind]=${FileName} 618 (( ind = ind + 1 )) 619 done 620 fi 621 213 IGCM_check_CheckAtlas 622 214 623 215 # Time of last write on run.card … … 627 219 else 628 220 221 NbRebuild="." 222 FirstRebuild="." 223 LastRebuild="." 224 629 225 NbLines=0 630 226 … … 634 230 # Print results 635 231 # ============= 636 AffichResult -f232 IGCM_check_PrintHeader 637 233 ind=0 638 234 while [ $ind -lt $NbLines ] ; do 639 AffichResult -j235 IGCM_check_PrintJob 640 236 (( ind = ind + 1 )) 641 237 done 642 AffichResult -l643 644 fi 238 IGCM_check_PrintFooter 239 240 fi
Note: See TracChangeset
for help on using the changeset viewer.