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

made some modifications to speed up archive restart and debug process

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.