source: TOOLS/PACK_IPSL/launch_ipsl_pack.sh @ 1823

Last change on this file since 1823 was 1822, checked in by aclsce, 12 years ago

Modifications done by Guillaume P :

  • error handling for the whole script
  • check of nco version
  • restart tool for list script
  • progress visualization for both scripts
  • "force" option -f added for both scripts
  • timing information added for pack script
File size: 5.1 KB
Line 
1#!/bin/bash
2######################
3## TITANE   CEA ##
4######################
5#MSUB -r ipsl_pack      # Nom du job               
6#MSUB -eo
7#MSUB -n 1              # Reservation du processus
8#MSUB -T 86400          # Limite de temps elapsed du job
9#MSUB -p gen2211
10#MSUB -q mono
11
12# ex : ./launch_ipsl_pack.sh fichier_param_test1.txt
13# ex : ./launch_ipsl_pack.sh param_SL.txt
14# ex : ./launch_ipsl_pack.sh param_OM.txt
15
16export JOB_DIR=${LS_SUBCWD:-${PWD}}
17export EXE_DIR=${JOB_DIR}
18
19##### gpdebug : addition ##################################
20# Boucle qui gere les parametres du script (permet l'introduction d'une option -f
21# qui force l'execution de toute les etapes du script de listes)
22execEveryStep=0
23LISTE_SIMUL=
24while [ $# -gt 0 ]
25do
26   echo "boucle sur les arguments du script ..."
27   echo "@=$@"
28   case $1 in
29   -f)  execEveryStep=1
30        echo "force..."
31        ;;
32   *)  LISTE_SIMUL=${1} 
33       echo "autres..."
34       ;;
35   
36   esac
37   shift
38done
39echo "Fin boucle sur arguments"
40export execEveryStep=${execEveryStep}
41
42# fichier de progression d'execution
43extSuiviListes=`echo ${LISTE_SIMUL} | sed 's;\.[[:alnum:]]*$;;' `
44# echo "extSuiviListes=$extSuiviListes" # gpdebug : a virer
45export MonitoringDir="${PWD}/SuiviListes_${extSuiviListes}"
46# echo "MonitoringDir=$MonitoringDir" # gpdebug : a virer
47# exit 0  # gpdebug : a virer
48
49export generalMonitorFile=${MonitoringDir}/general.txt
50export nbSimuFile=${MonitoringDir}/nbSimu.txt
51
52##### gpdebug : fin #####################################
53
54# LISTE_SIMUL=${1} # gpdebug : suppr --> cette affectation est maintenant faite dans la boucle while des arg du script ################
55
56#LISTE_SIMUL=${JOB_DIR}/param_SL.txt
57#LISTE_DMNFS=${JOB_DIR}/SL_information_dmnfs_2012-03-21
58
59# LISTE_SIMUL=${JOB_DIR}/param_OM.txt
60# LISTE_DMNFS=${JOB_DIR}/OM_information_dmnfs_2012-03-21
61
62LISTE_SIMUL_NAME=$(basename ${LISTE_SIMUL} )
63SCRIPT_NAME=$(basename ${0} )
64
65export IGCM_DEM=${SCRATCHDIR}/IGCM_DEM
66export IGCM_TMP=${SCRATCHDIR}/IGCM_DEM/tmp
67export clean_tmp=${clean_tmp:-yes}
68export DEM_LOG=${JOB_DIR}/dem_${LSB_JOBID:-${$}}.log
69export LOG_LEV=2
70export FileParam=${LISTE_SIMUL} # gpdebug : pour appel (dans DEM_utilities.sh) a showListsProgress.sh
71export FatherPID=$$ # gpdebug : pour appel (dans DEM_utilities.sh) a showListsProgress.sh
72
73source ${EXE_DIR}/DEM_utilities.sh
74
75# gpdebug : prepare le fichier de suivi de la progression
76prepareMonitoringDir
77# exit 0 # gpdebug : a virer ##############
78
79# gpdebug : Execute la function errorReceive() si reception d'un signal TERM
80trap 'DEM_errorReceive' TERM ########
81
82# gpdebug : liste des processus à détruire en cas d'erreur bloquante
83export listPID=$$ ########
84
85# gpdebug : fichier pour la transmission des messages d'erreur d'un fils au prog principal
86export errorMsgFile="${PWD}/errorMsg.txt" ########
87
88DEM_log -0 "Demarrage de ${SCRIPT_NAME}"
89
90mkdir -p ${IGCM_DEM}
91mkdir -p ${IGCM_TMP}
92
93rm -rf ${IGCM_TMP}/tmp/*
94rm -f ${DEM_LOG}
95
96# 0- on cree le listing correspondant au fichier param
97# on efface les tests precedents
98
99# rm -f ${IGCM_DEM}/Listing.txt # gpdebug : en cas de reprise, on ne peut pas laisser ca en l'etat --> suppr
100# gpdebug : Donc on rajoute le if qui suit
101if [ "x${execEveryStep}" == "x1" ]
102then
103    rm -f ${IGCM_DEM}/Listing.txt
104fi
105
106for DIR in $( awk '{print $0}' ${LISTE_SIMUL} ) ; do
107    ./create_listing.sh $DIR
108done
109
110LISTE_DMNFS=${IGCM_DEM}/Listing.txt
111
112# 1- A partir de param_list - on recherche l'ensemble des simulations a packer
113# la liste creee (liste_simul_$1) est stockee dans $SCRATCHDIR/IGCM_DEM
114
115${EXE_DIR}/find_directory_simul.sh ${LISTE_SIMUL} ${LISTE_DMNFS}
116
117# sleep 2 # gpdebug : a virer
118# echo "Le script principal continue..." # gpdebug : a virer
119# exit 0 # gpdebug : a virer
120
121####################################################################
122# gpdebug : partie vidée pour simplifier.  Voir le fichier original.
123
124# 2- Pour chacune des simulations listees on cree un fichier config.card correspondant
125# ces fichiers seront stockes dans ${IGCM_DEM}/arborescence/
126# un fichier recapitulatif des fichiers config.card (config_card.liste) crees sera stocke dans ${IGCM_DEM}
127
128${EXE_DIR}/create_config_card.sh ${IGCM_DEM}/liste_simul_${LISTE_SIMUL_NAME}  ${LISTE_DMNFS}
129
130# exit 0 # gpdebug : a virer #########
131
132#3- recherche de la taille ideale de pack pour chacune des simulations - puis creation des listes
133
134for CONFIG in $( awk '{print $1}' ${IGCM_DEM}/config_card.liste ) ; do
135   
136    DEM_log -2 ${CONFIG}
137
138    eval $(grep IGCM_DEM_SIMU ${CONFIG})
139    ${EXE_DIR}/calcul_size_simul.sh ${CONFIG} ${LISTE_DMNFS}
140    # exit 0 # gpdebug : a virer #########
141    DEM_state=$( DEM_read_state ${IGCM_DEM}/config_card.liste ${CONFIG} )
142    if [[ "${DEM_state}" != "WriteListTarDone" ]] ; then
143
144        DEM_log -3  "la simulation est superieur a 1Go alors on pack"
145        ${EXE_DIR}/find_size_pack.sh   ${CONFIG} ${LISTE_DMNFS}
146        ${EXE_DIR}/write_liste_pack.sh ${CONFIG} ${LISTE_DMNFS}
147        ${EXE_DIR}/archive_restart.sh ${CONFIG} ${LISTE_DMNFS}
148        # DEM_errorSend "${SCRIPT_NAME}:${LINENO}:On arrete expres !" # gpdebug : a virer ########
149        ${EXE_DIR}/archive_debug.sh ${CONFIG} ${LISTE_DMNFS}
150
151    fi
152done
153####################################################################
154
155DEM_log -0 "Fin de ${SCRIPT_NAME}"
Note: See TracBrowser for help on using the repository browser.