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 | |
---|
16 | # Est-on sur ulam (machine de l'IDRIS) ? |
---|
17 | is_idris_machine=`hostname | grep "ulam" | wc -l ` |
---|
18 | ON_IDRIS="no" |
---|
19 | if [ "x${is_idris_machine}" != "x0" ] |
---|
20 | then |
---|
21 | ON_IDRIS="yes" |
---|
22 | fi |
---|
23 | export ON_IDRIS=${ON_IDRIS} |
---|
24 | |
---|
25 | ##### gpdebug : addition ################################## |
---|
26 | # Boucle qui gere les parametres du script (permet l'introduction d'une option -f |
---|
27 | # qui force l'execution de toute les etapes du script de listes) |
---|
28 | execEveryStep=0 |
---|
29 | LISTE_SIMUL_ARG= |
---|
30 | Question=n |
---|
31 | continuePack=y |
---|
32 | while [ $# -gt 0 ] |
---|
33 | do |
---|
34 | echo "boucle sur les arguments du script ..." |
---|
35 | echo "@=$@" |
---|
36 | case $1 in |
---|
37 | -h) cat <<fin |
---|
38 | ce script permet de trouver une frequence de pack plus longue pour une simulation donnee |
---|
39 | IMPORTANT : avant de lancer ce script vous devez configurer le fichier load_ipslPack_env.sh |
---|
40 | |
---|
41 | Usage : ./launch_ipsl_pack.sh param.txt |
---|
42 | avec param.txt contenant le path de la simulation. Ex : |
---|
43 | vi param.txt ; /ccc/store/cont003/dsm/p86cozic/IGCM_OUT/IPSLCM5A/PROD/historical/CM51989.2 |
---|
44 | ATTENTION : il ne faut pas de "/" en fin du path |
---|
45 | |
---|
46 | options de lancement : |
---|
47 | -h : manuel d'utilisation |
---|
48 | -f : possibilite de forcer le redemarrage du script au debut |
---|
49 | -v : mode dans lequel apres le calcul de la nouvelle frequence, le script propose a l'utilisateur |
---|
50 | de continuer ou non (donc de creer les nouvelles listes de fichiers à packer ou non) |
---|
51 | |
---|
52 | fin |
---|
53 | exit;; |
---|
54 | -f) execEveryStep=1 |
---|
55 | echo "force..." |
---|
56 | ;; |
---|
57 | -v) Question=y |
---|
58 | echo "nous nous arreterons apres le calcul de la frequence pour vous laisser le choix de continuer ou non" |
---|
59 | ;; |
---|
60 | *) LISTE_SIMUL_ARG=${1} |
---|
61 | echo "autres..." |
---|
62 | ;; |
---|
63 | esac |
---|
64 | shift |
---|
65 | done |
---|
66 | export execEveryStep=${execEveryStep} |
---|
67 | |
---|
68 | SCRIPT_NAME=$(basename ${0} ) |
---|
69 | |
---|
70 | # On renseigne les variables d'environnement |
---|
71 | export scriptCallingLoad=$SCRIPT_NAME # sert a renseigner "load_ipslPack_env.sh" sur le script l'appelant |
---|
72 | . load_ipslPack_env.sh |
---|
73 | |
---|
74 | if [ "x${LISTE_SIMUL_ARG}" == "x" ] |
---|
75 | then |
---|
76 | echo "Vous devez passer un fichier en parametre" |
---|
77 | exit 1 |
---|
78 | else |
---|
79 | LISTE_SIMUL=${LISTE_SIMUL_ARG} |
---|
80 | fi |
---|
81 | |
---|
82 | LISTE_SIMUL_NAME=$(basename ${LISTE_SIMUL} ) |
---|
83 | # fichier de progression d'execution |
---|
84 | ficParam=$( basename ${LISTE_SIMUL} ) |
---|
85 | extSuiviListes=`echo ${ficParam} | sed 's;\.[[:alnum:]]*$;;' ` |
---|
86 | |
---|
87 | |
---|
88 | export JOB_DIR=${TMP_MIGR_DATA} |
---|
89 | export EXE_DIR=${LS_SUBCWD:-${PWD}} |
---|
90 | |
---|
91 | export MonitoringDir="${TMP_MIGR_DATA}/SuiviListes_${extSuiviListes}" |
---|
92 | |
---|
93 | export generalMonitorFile=${MonitoringDir}/general.txt |
---|
94 | export nbSimuFile=${MonitoringDir}/nbSimu.txt |
---|
95 | |
---|
96 | |
---|
97 | if [ "x${IGCM_DEM}" == "x" ] |
---|
98 | then |
---|
99 | echo "variable IGCM_DEM non renseignee. STOP." |
---|
100 | exit 1 |
---|
101 | fi |
---|
102 | if [ "x${execEveryStep}" == "x1" ] |
---|
103 | then |
---|
104 | echo "Destruction du repertoire :" |
---|
105 | echo "${IGCM_DEM}" |
---|
106 | rm -rf ${IGCM_DEM} |
---|
107 | fi |
---|
108 | |
---|
109 | export IGCM_TMP="${IGCM_DEM}/tmp" |
---|
110 | # INPUT_DMF_DATA, positionnee par le load_ipslPack_env.sh, sert pour pour PATH_SIMUL_SHORT dans create_config_card.sh |
---|
111 | |
---|
112 | export clean_tmp=${clean_tmp:-yes} |
---|
113 | export DEM_LOG=${JOB_DIR}/dem_${LSB_JOBID:-${$}}.log |
---|
114 | export LOG_LEV=0 |
---|
115 | export FileParam=${LISTE_SIMUL} # gpdebug : pour appel (dans DEM_utilities.sh) a showListsProgress.sh |
---|
116 | export FatherPID=$$ # gpdebug : pour appel (dans DEM_utilities.sh) a showListsProgress.sh |
---|
117 | |
---|
118 | source ${EXE_DIR}/DEM_utilities.sh |
---|
119 | |
---|
120 | # gpdebug : prepare le fichier de suivi de la progression |
---|
121 | prepareMonitoringDir |
---|
122 | |
---|
123 | # gpdebug : Execute la function errorReceive() si reception d'un signal TERM |
---|
124 | trap 'DEM_errorReceive' TERM ######## |
---|
125 | |
---|
126 | # gpdebug : liste des processus à détruire en cas d'erreur bloquante |
---|
127 | export listPID=$$ ######## |
---|
128 | |
---|
129 | # gpdebug : fichier pour la transmission des messages d'erreur d'un fils au prog principal |
---|
130 | export errorMsgFile="${TMP_MIGR_DATA}/errorMsg.txt" ######## |
---|
131 | |
---|
132 | DEM_log -0 "Demarrage de ${SCRIPT_NAME}" |
---|
133 | |
---|
134 | mkdir -p ${IGCM_DEM} |
---|
135 | mkdir -p ${IGCM_TMP} |
---|
136 | |
---|
137 | rm -rf ${IGCM_TMP}/tmp/* |
---|
138 | rm -f ${DEM_LOG} |
---|
139 | |
---|
140 | # 0- on cree le listing correspondant au fichier param |
---|
141 | # on efface les tests precedents |
---|
142 | |
---|
143 | for DIR in $( awk '{print $0}' ${LISTE_SIMUL} ) ; do |
---|
144 | eval DIR_FINAL=$DIR |
---|
145 | ./create_listing.sh $DIR_FINAL |
---|
146 | done |
---|
147 | |
---|
148 | LISTE_DMNFS=${IGCM_DEM}/Listing.txt |
---|
149 | |
---|
150 | |
---|
151 | # 1- A partir de param_list - on recherche l'ensemble des simulations a packer |
---|
152 | # la liste creee (liste_simul_$1) est stockee dans $SCRATCHDIR/IGCM_DEM |
---|
153 | |
---|
154 | ${EXE_DIR}/find_directory_simul.sh ${LISTE_SIMUL} ${LISTE_DMNFS} |
---|
155 | |
---|
156 | |
---|
157 | # 2- Pour chacune des simulations listees on cree un fichier config.card correspondant |
---|
158 | # ces fichiers seront stockes dans ${IGCM_DEM}/arborescence/ |
---|
159 | # un fichier recapitulatif des fichiers config.card (config_card.liste) crees sera stocke dans ${IGCM_DEM} |
---|
160 | |
---|
161 | ${EXE_DIR}/create_config_card.sh ${IGCM_DEM}/liste_simul_${LISTE_SIMUL_NAME} ${LISTE_DMNFS} |
---|
162 | |
---|
163 | #3- recherche de la taille ideale de pack pour chacune des simulations - puis creation des listes |
---|
164 | |
---|
165 | for CONFIG in $( awk '{print $1}' ${IGCM_DEM}/config_card.liste ) ; do |
---|
166 | DEM_log -2 ${CONFIG} |
---|
167 | |
---|
168 | eval $(grep IGCM_DEM_SIMU ${CONFIG}) |
---|
169 | ${EXE_DIR}/calcul_size_simul.sh ${CONFIG} ${LISTE_DMNFS} |
---|
170 | |
---|
171 | DEM_state=$( DEM_read_state ${IGCM_DEM}/config_card.liste ${CONFIG} ) |
---|
172 | if [[ "${DEM_state}" != "WriteListTarDone" ]] ; then |
---|
173 | |
---|
174 | DEM_log -3 "la simulation est superieur a 1Go alors on pack" |
---|
175 | ${EXE_DIR}/find_size_pack.sh ${CONFIG} ${LISTE_DMNFS} |
---|
176 | freq=$(cat ${IGCM_DEM_SIMU}/period_pack.txt) |
---|
177 | if [[ "$Question" == "y" ]]; then |
---|
178 | echo -e "L'outil de surpack vous propose une nouvelle frequence de pack de : ${freq} annees " |
---|
179 | echo -e "voulez vous continuer ? " |
---|
180 | echo -n "(y/n) ? " |
---|
181 | read ContinueAnswer |
---|
182 | case ${ContinueAnswer} in |
---|
183 | oui|OUI|o|y|yes|YES) |
---|
184 | echo "OK nous continuons" |
---|
185 | continuePack=y |
---|
186 | ;; |
---|
187 | non|NON|n|no|NO) |
---|
188 | echo "OK nous arretons tout" |
---|
189 | continuePack=n |
---|
190 | ;; |
---|
191 | *) |
---|
192 | echo "I did not recognize your answer." |
---|
193 | echo "Please respond: oui|OUI|o|y|yes|YES" |
---|
194 | echo "Or please respond: non|NON|n|no|NO" |
---|
195 | exit |
---|
196 | ;; |
---|
197 | esac |
---|
198 | fi |
---|
199 | |
---|
200 | if [[ "$continuePack" == "y" ]] ; then |
---|
201 | ${EXE_DIR}/write_liste_pack.sh ${CONFIG} ${LISTE_DMNFS} |
---|
202 | ${EXE_DIR}/archive_restart.sh ${CONFIG} ${LISTE_DMNFS} |
---|
203 | ${EXE_DIR}/archive_debug.sh ${CONFIG} ${LISTE_DMNFS} |
---|
204 | fi |
---|
205 | |
---|
206 | fi |
---|
207 | done |
---|
208 | #################################################################### |
---|
209 | |
---|
210 | DEM_log -0 "Fin de ${SCRIPT_NAME}" |
---|