Changeset 2045


Ignore:
Timestamp:
04/05/13 17:34:38 (11 years ago)
Author:
acosce
Message:

made some modifications to speed up archive restart and debug process

Location:
TOOLS/PACK_IPSL
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TOOLS/PACK_IPSL/archive_debug.sh

    r2027 r2045  
    9595 
    9696    ls -l ${STORE_DEBUG} > ${IGCM_TMP}/${$}.new_liste_debug_files.txt 
     97 
     98 
     99#creation des listes en fonction des suffixes 
     100   if [ "x${ON_IDRIS}" == "xno" ] 
     101   then 
     102       awk '{if (NR >1) print $9}' ${IGCM_TMP}/${$}.new_liste_debug_files.txt > ${IGCM_TMP}/${$}.new_liste_debug_files.txt_tmp 
     103   else 
     104       awk '{if (NR >1) print $8}' ${IGCM_TMP}/${$}.new_liste_debug_files.txt > ${IGCM_TMP}/${$}.new_liste_debug_files.txt_tmp        
     105   fi 
     106sort ${IGCM_TMP}/${$}.new_liste_debug_files.txt_tmp > ${IGCM_TMP}/${$}.order_new_liste_debug_files.txt 
     107ref=`awk -F_ '{if (NR==1) print $1}' ${IGCM_TMP}/${$}.order_new_liste_debug_files.txt` 
     108 
     109 
     110 
     111i=1 
     112for new_file in `awk  '{print $0}' ${IGCM_TMP}/${$}.order_new_liste_debug_files.txt`; do  
     113    new_ref=$( echo ${new_file} | sed -e "s/_.*//")  
     114 
     115    if [ ${new_ref} == ${ref} ]; then 
     116        echo ${new_file} >> ${IGCM_TMP}/${$}.debug_list_${i}.txt 
     117    else 
     118        ref=${new_ref} 
     119        (( i = $i + 1 ))  
     120        echo ${new_file} >> ${IGCM_TMP}/${$}.debug_list_${i}.txt 
     121    fi 
     122done 
     123 
     124j=1 
     125while [[ $j -le $i  ]]; do  
     126 
     127 
    97128### 2- creer les listes de fichiers par periode #### 
    98129    DEM_log -1 "Creation des listes de fichiers par periode" 
     
    100131    date_begin=${DateBegin} 
    101132    date_end=${DateEnd} 
    102  
     133     
    103134    year_begin=$(echo ${date_begin} | cut -c 1-4 ) 
    104135    month_begin=$(echo ${date_begin} | cut -c 5-6 ) 
     
    122153        month_end_pack=${month_begin_pack} 
    123154        year_end_pack=`expr ${year_begin_pack} + ${period_pack}` 
    124  
     155         
    125156        date_end_pack=${year_end_pack}${month_end_pack}01    
    126         if [ "x${ON_IDRIS}" == "xno" ] 
    127         then 
    128             for file in `awk '{print $9}' ${IGCM_TMP}/${$}.new_liste_debug_files.txt`; do  
    129                 extract_date_file=`echo ${file}  | sed -e "s/.*\${JobName}_//"` 
    130                 date_file=`echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g'` 
    131                 if [[  "x${date_file}" != "x" && ! -n ${date_file//[0-9]/} ]]; then 
    132                     if [  ${date_file} -lt ${date_end_pack} ] 
     157        for file in `awk '{print $1}' ${IGCM_TMP}/${$}.debug_list_${j}.txt`; do  
     158            extract_date_file=`echo ${file}  | sed -e "s/.*\${JobName}_//"` 
     159            date_file=`echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g'` 
     160            if [[  "x${date_file}" != "x" && ! -n ${date_file//[0-9]/} ]]; then 
     161                if [  ${date_file} -lt ${date_end_pack} ] 
     162                then  
     163                    if [ ${date_file} -ge ${date_begin_pack} ] 
    133164                    then  
    134                         if [ ${date_file} -ge ${date_begin_pack} ] 
    135                         then  
    136                             echo ${file} >> ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt 
    137                         fi 
    138                     fi  
    139                 fi 
    140             done 
    141         else 
    142             for file in `awk '{print $8}' ${IGCM_TMP}/${$}.new_liste_debug_files.txt`; do  
    143                 extract_date_file=`echo ${file}  | sed -e "s/.*\${JobName}_//"` 
    144                 date_file=`echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g'` 
    145         if [[  "x${date_file}" != "x" && ! -n ${date_file//[0-9]/} ]]; then 
    146                     if [ ${date_file} -lt ${date_end_pack} ] 
    147                     then  
    148                         if [ ${date_file} -ge ${date_begin_pack} ] 
    149                         then  
    150                             echo ${file} >> ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt 
    151                         fi 
    152                     fi  
    153                 fi 
    154             done   
    155         fi 
     165                        echo ${file} >> ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt 
     166                        grep -v ${file} ${IGCM_TMP}/${$}.debug_list_${j}.txt > ${IGCM_TMP}/${$}.debug_list_${j}.txt.tmp 
     167                        mv ${IGCM_TMP}/${$}.debug_list_${j}.txt.tmp ${IGCM_TMP}/${$}.debug_list_${j}.txt 
     168                         
     169                    fi 
     170                fi  
     171            fi 
     172            if [  ${date_file} -gt ${date_end_pack} ] 
     173            then  
     174                break 
     175            fi 
     176             
     177        done 
     178        month_begin_pack=${month_end_pack} 
     179        year_begin_pack=${year_end_pack} 
     180 
     181        date_begin_pack=${year_begin_pack}${month_begin_pack}01 
     182 
     183        number_pack=`expr ${number_pack} + 1` 
     184    done 
     185 
     186    ((j = $j + 1 )) 
     187done 
     188 
     189compt_pack=1 
     190while [[ $compt_pack -le $number_pack ]]; do  
     191 
    156192#on archive les debug - le nom de l'archive contiendra ${yearbegin}${monthbegin}_${yearend}${monthend}  
    157193# end etant la date du dernier fichier contenu et non pas la premiere date suivant  
     
    159195#On classe par ordre alphabetique les fichiers contenus dans liste_pack_debug  
    160196#la date du dernier fichier donnera la date de fin du pack 
    161   if [[ -f ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt ]] ; then 
    162    sort ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt > ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt.tmp 
    163  
    164    first_file=$(head -n 1 ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt.tmp ) 
     197  if [[ -f ${IGCM_TMP}/${$}.liste_pack_debug_${compt_pack}.txt ]] ; then 
     198   sort ${IGCM_TMP}/${$}.liste_pack_debug_${compt_pack}.txt > ${IGCM_TMP}/${$}.liste_pack_debug_${compt_pack}.txt.tmp 
     199 
     200   first_file=$(head -n 1 ${IGCM_TMP}/${$}.liste_pack_debug_${compt_pack}.txt.tmp ) 
    165201   extract_date_file=$( echo ${first_file}  | sed -e "s/.*${JobName}_//" ) 
    166202   DateBegin_Debug=$(echo ${extract_date_file}| sed 's%\([0-9]\{8\}\)_.*$%\1%g' ) 
    167203 
    168    last_file=$(tail -n 1 ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt.tmp ) 
     204   last_file=$(tail -n 1 ${IGCM_TMP}/${$}.liste_pack_debug_${compt_pack}.txt.tmp ) 
    169205   extract_date_file=$( echo ${last_file}  | sed -e "s/.*${JobName}_//" ) 
    170206   DateEnd_Debug=$(   echo ${extract_date_file}| sed 's%.*\([0-9]\{8\}\)_.*$%\1%g' ) 
    171    mv ${IGCM_TMP}/${$}.liste_pack_debug_${number_pack}.txt.tmp ${DEBUG_TAR}/${JobName}_debug_${DateBegin_Debug}_${DateEnd_Debug}.list 
     207   mv ${IGCM_TMP}/${$}.liste_pack_debug_${compt_pack}.txt.tmp ${DEBUG_TAR}/${JobName}_debug_${DateBegin_Debug}_${DateEnd_Debug}.list 
    172208  fi 
    173209 
    174 DEM_log -1 "Passage de la commande Tar pour archiver la liste creee" 
    175 #   tar -cf ${JobName}_${date_begin_pack}_${DateEnd_Debug}_debug.tar --dereference  --files-from ${DEBUG_TAR}/tar_debug_${date_begin_pack}_${DateEnd_Debug}.list 
    176 #   cat  ${DEBUG_TAR}/tar_debug_${number_pack}.list | xargs rm  
    177210 
    178211 
    179212DEM_log -1 "On definit le datebegin de la  prochaine periode pack" 
    180213#on definit la periode pack suivante 
    181    month_begin_pack=${month_end_pack} 
    182    year_begin_pack=${year_end_pack} 
    183  
    184    date_begin_pack=${year_begin_pack}${month_begin_pack}01 
    185  
    186    number_pack=`expr ${number_pack} + 1` 
    187  
     214 
     215   compt_pack=`expr ${compt_pack} + 1` 
    188216done 
    189217 
  • TOOLS/PACK_IPSL/archive_restart.sh

    r2022 r2045  
    7676if [ "x${STORE_RESTART}" != "x" ] 
    7777then 
    78 rm -rf * 
     78    rm -rf * 
    7979fi 
    8080# On les copie sur le scratchdir en changeant le nom et conservant la date 
     
    8787ls -l ${STORE_RESTART} > ${IGCM_TMP}/${$}.new_liste_restart_files.txt 
    8888 
    89 ### 2- creer les listes de fichiers par periode #### 
    90 DEM_log -1 "Creation des listes de fichiers par periode" 
    91 ### 2.1- extraire l'annee et le mois de DateBegin ### 
    92 date_begin=${DateBegin} 
    93 date_end=${DateEnd} 
    94  
    95 year_begin=$(echo ${date_begin} | cut -c 1-4 ) 
    96 month_begin=$(echo ${date_begin} | cut -c 5-6 ) 
    97 year_end=$(echo ${date_end} | cut -c 1-4 ) 
    98 month_end=$(echo ${date_end} | cut -c 5-6 ) 
    99  
    100  
    101 ### 2.2- creation des listes ### 
    102 date_begin_pack=${date_begin} 
    103 date_end_simulation=${date_end} 
    104  
    105 month_begin_pack=${month_begin} 
    106 year_begin_pack=${year_begin} 
    107  
    108 number_pack=1 
    109 while [ ${date_begin_pack} -le ${date_end_simulation} ] 
    110 do  
    111  
    112 DEM_log -1 "On calcule la date de fin du pack " 
    113  
    114    month_end_pack=${month_begin_pack} 
    115    year_end_pack=`expr ${year_begin_pack} + ${period_pack}` 
    116  
    117  
    118    date_end_pack=${year_end_pack}${month_end_pack}01    
    119     
     89### creation de liste en fonction du type de restart 
    12090   if [ "x${ON_IDRIS}" == "xno" ] 
    12191   then 
    122        for file in `awk '{print $9}' ${IGCM_TMP}/${$}.new_liste_restart_files.txt`; do    
    123          extract_date_file=`echo ${file}  | sed -e "s/.*\${JobName}_//"` 
    124          date_file=`echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g'` 
    125  
    126          # DEM_log "date_file = ${date_file}" 
    127          if [  ${date_file} -lt ${date_end_pack} ] 
    128          then  
    129             if [ ${date_file} -ge ${date_begin_pack} ] 
    130             then  
    131                # DEM_log "${file} ${date_file} dans ${date_begin_pack} ${date_end_pack} " 
    132                echo ${file} >> ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt 
    133             fi 
    134          fi   
    135        done 
     92       awk '{if (NR >1) print $9}' ${IGCM_TMP}/${$}.new_liste_restart_files.txt > ${IGCM_TMP}/${$}.new_liste_restart_files.txt_tmp 
    13693   else 
    137       for file in `awk '{print $8}' ${IGCM_TMP}/${$}.new_liste_restart_files.txt`; do    
    138          extract_date_file=`echo ${file}  | sed -e "s/.*\${JobName}_//"` 
    139          date_file=`echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g'` 
    140  
    141          # DEM_log "date_file = ${date_file}" 
    142          if [  ${date_file} -lt ${date_end_pack} ] 
    143          then  
    144             if [ ${date_file} -ge ${date_begin_pack} ] 
    145             then  
    146                # DEM_log "${file} ${date_file} dans ${date_begin_pack} ${date_end_pack} " 
    147                echo ${file} >> ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt 
    148             fi 
    149          fi   
    150        done   
     94       awk '{if (NR >1) print $8}' ${IGCM_TMP}/${$}.new_liste_restart_files.txt > ${IGCM_TMP}/${$}.new_liste_restart_files.txt_tmp        
    15195   fi 
    152  
     96sort ${IGCM_TMP}/${$}.new_liste_restart_files.txt_tmp > ${IGCM_TMP}/${$}.order_new_liste_restart_files.txt 
     97ref=`awk -F_ '{if (NR==1) print $1}' ${IGCM_TMP}/${$}.order_new_liste_restart_files.txt` 
     98 
     99i=1 
     100for new_file in `awk  '{print $0}' ${IGCM_TMP}/${$}.order_new_liste_restart_files.txt`; do  
     101    new_ref=$( echo ${new_file} | sed -e "s/_.*//")  
     102 
     103    if [ ${new_ref} == ${ref} ]; then 
     104        echo ${new_file} >> ${IGCM_TMP}/${$}.restart_list_${i}.txt 
     105    else 
     106        ref=${new_ref} 
     107        (( i = $i + 1 ))  
     108        echo ${new_file} >> ${IGCM_TMP}/${$}.restart_list_${i}.txt 
     109    fi 
     110done 
     111 
     112 
     113 
     114j=1 
     115while [[ $j -le $i  ]]; do  
     116 
     117### 2- creer les listes de fichiers par periode #### 
     118    DEM_log -1 "Creation des listes de fichiers par periode" 
     119### 2.1- extraire l'annee et le mois de DateBegin ### 
     120    date_begin=${DateBegin} 
     121    date_end=${DateEnd} 
     122 
     123    year_begin=$(echo ${date_begin} | cut -c 1-4 ) 
     124    month_begin=$(echo ${date_begin} | cut -c 5-6 ) 
     125    year_end=$(echo ${date_end} | cut -c 1-4 ) 
     126    month_end=$(echo ${date_end} | cut -c 5-6 ) 
     127 
     128 
     129### 2.2- creation des listes ### 
     130    date_begin_pack=${date_begin} 
     131    date_end_simulation=${date_end} 
     132 
     133    month_begin_pack=${month_begin} 
     134    year_begin_pack=${year_begin} 
     135 
     136    number_pack=1 
     137    echo date_end_simulation : $date_end_simulation 
     138    while [ ${date_begin_pack} -le ${date_end_simulation} ] 
     139    do  
     140         
     141        echo "On calcule la date de fin du pack " 
     142 
     143        month_end_pack=${month_begin_pack} 
     144        year_end_pack=`expr ${year_begin_pack} + ${period_pack}` 
     145 
     146 
     147        date_end_pack=${year_end_pack}${month_end_pack}01    
     148        echo date_end_pack $date_end_pack 
     149         
     150        for file in `awk '{print $1}' ${IGCM_TMP}/${$}.restart_list_${j}.txt`; do    
     151            extract_date_file=`echo ${file}  | sed -e "s/.*\${JobName}_//"` 
     152            date_file=`echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g'` 
     153             
     154            if [  ${date_file} -lt ${date_end_pack} ] 
     155            then 
     156                if [ ${date_file} -ge ${date_begin_pack} ] 
     157                then  
     158                    echo ${file} >> ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt 
     159                    grep -v ${file} ${IGCM_TMP}/${$}.restart_list_${j}.txt > ${IGCM_TMP}/${$}.restart_list_${j}.txt.tmp 
     160                    mv ${IGCM_TMP}/${$}.restart_list_${j}.txt.tmp ${IGCM_TMP}/${$}.restart_list_${j}.txt 
     161                fi 
     162                 
     163            fi 
     164            if [  ${date_file} -gt ${date_end_pack} ] 
     165            then  
     166                break 
     167            fi 
     168        done 
     169 
     170 
     171 
     172        DEM_log -1 "On definit le datebegin de la  prochaine periode pack" 
     173#on definit la periode pack suivante 
     174        month_begin_pack=${month_end_pack} 
     175        year_begin_pack=${year_end_pack} 
     176         
     177        date_begin_pack=${year_begin_pack}${month_begin_pack}01 
     178         
     179        number_pack=`expr ${number_pack} + 1` 
     180 
     181    done 
     182 
     183    ((j = $j + 1 )) 
     184done 
     185 
     186compt_pack=1 
     187while [[ $compt_pack -le $number_pack ]]; do  
    153188#on archive les restart - le nom de l'archive contiendra ${yearbegin}${monthbegin}_${yearend}${monthend}  
    154189# end etant la date du dernier fichier contenu et non pas la premiere date suivant  
    155 DEM_log -1 "Recherche de la date de fin reel pour nommer l'archive " 
     190    DEM_log -1 "Recherche de la date de fin reel pour nommer l'archive " 
    156191#On classe par ordre alphabetique les fichiers contenus dans liste_pack_restart  
    157192#la date du dernier fichier donnera la date de fin du pack 
    158   if [[ -f ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt ]] ; then 
    159    sort ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt > ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt.tmp 
    160  
    161    first_file=$(head -n 1 ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt.tmp ) 
    162    extract_date_file=$( echo ${first_file}  | sed -e "s/.*${JobName}_//" ) 
    163    DateBegin_Restart=$(echo ${extract_date_file}| sed 's%\([0-9]\{8\}\)_.*$%\1%g' ) 
    164  
    165    last_file=$(tail -n 1 ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt.tmp ) 
    166    extract_date_file=$( echo ${last_file}  | sed -e "s/.*${JobName}_//" ) 
    167    DateEnd_Restart=$(   echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g' ) 
    168    mv ${IGCM_TMP}/${$}.liste_pack_restart_${number_pack}.txt.tmp ${RESTART_TAR}/${JobName}_restart_${DateBegin_Restart}_${DateEnd_Restart}.list 
    169   fi 
    170  
    171 DEM_log -1 "Passage de la commande Tar pour archiver la liste creee" 
    172 #   tar -cf ${JobName}_${date_begin_pack}_${DateEnd_Restart}_restart.tar --dereference  --files-from ${RESTART_TAR}/tar_restart_${date_begin_pack}_${DateEnd_Restart}.list 
    173 #   cat  ${RESTART_TAR}/tar_restart_${number_pack}.list | xargs rm  
    174  
    175  
    176 DEM_log -1 "On definit le datebegin de la  prochaine periode pack" 
    177 #on definit la periode pack suivante 
    178    month_begin_pack=${month_end_pack} 
    179    year_begin_pack=${year_end_pack} 
    180  
    181    date_begin_pack=${year_begin_pack}${month_begin_pack}01 
    182  
    183    number_pack=`expr ${number_pack} + 1` 
    184  
     193    if [[ -f ${IGCM_TMP}/${$}.liste_pack_restart_${compt_pack}.txt ]] ; then 
     194        sort ${IGCM_TMP}/${$}.liste_pack_restart_${compt_pack}.txt > ${IGCM_TMP}/${$}.liste_pack_restart_${compt_pack}.txt.tmp 
     195 
     196        first_file=$(head -n 1 ${IGCM_TMP}/${$}.liste_pack_restart_${compt_pack}.txt.tmp ) 
     197        extract_date_file=$( echo ${first_file}  | sed -e "s/.*${JobName}_//" ) 
     198        DateBegin_Restart=$(echo ${extract_date_file}| sed 's%\([0-9]\{8\}\)_.*$%\1%g' ) 
     199             
     200        last_file=$(tail -n 1 ${IGCM_TMP}/${$}.liste_pack_restart_${compt_pack}.txt.tmp ) 
     201        extract_date_file=$( echo ${last_file}  | sed -e "s/.*${JobName}_//" ) 
     202        DateEnd_Restart=$(   echo ${extract_date_file}| sed 's/\([0-9]\{8\}\)_.*$/\1/g' ) 
     203        mv ${IGCM_TMP}/${$}.liste_pack_restart_${compt_pack}.txt.tmp ${RESTART_TAR}/${JobName}_restart_${DateBegin_Restart}_${DateEnd_Restart}.list 
     204    fi 
     205 
     206compt_pack=`expr ${compt_pack} + 1` 
    185207done 
     208 
    186209 
    187210cd ${EXE_DIR} 
Note: See TracChangeset for help on using the changeset viewer.