- Timestamp:
- 05/16/12 17:06:32 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TOOLS/PACK_IPSL/DEM_utilities.sh
r1709 r1729 24 24 function DEM_write_state { 25 25 # Mettre à jour l'état du pack pour une simulation 26 27 26 local L_CONFIG_FILE=${1} 28 27 local L_CONFIG_CARD=${2} 29 28 local L_NEW_STATE=${3} 29 30 local L_MAX_TRY=10 L_TRY=0 L_CHECK L_PP 31 32 # On essaye ${L_MAX_TRY} fois de mettre à jour le fichier 33 while [ ${L_TRY} -le ${L_MAX_TRY} ] 34 do 35 if [[ ! -f ${L_CONFIG_FILE}.lock ]] 36 then 37 echo ${$} >> ${L_CONFIG_FILE}.lock ; chmod -w ${L_CONFIG_FILE}.lock 38 L_CHECK=$( wc -l ${L_CONFIG_FILE}.lock | awk '{print $1}' ) 39 if [[ ${L_CHECK} -gt 1 ]] 40 then 41 DEM_log -0 "Erreur. Plusieurs processus on pose un verrou sur ${L_CONFIG_FILE}" 42 for L_PP in $( awk '{print $1}' ${L_CONFIG_FILE}.lock ) 43 do 44 DEM_log -0 "Erreur. Process : ${L_PP}" 45 done 46 return 1 47 fi 48 49 local L_OLD_LINE=$( grep ${L_CONFIG_CARD} ${L_CONFIG_FILE} ) 50 [[ ${?} -eq 0 ]] || ( return 1 ; ) 51 if [[ ${L_OLD_LINE} = "" ]] 52 then 53 DEM_log -0 "Erreur. Dans le fichier : ${L_CONFIG_FILE}, Experience ${L_CONFIG_CARD} non trouvee" 54 return 1 55 fi 56 local L_OLD_STATE=$( echo ${L_OLD_LINE} | awk '{print $2}' ) 57 [[ ${?} -eq 0 ]] || ( return 1 ; ) 58 59 L_NEW_LINE="${L_CONFIG_CARD} ${L_NEW_STATE}" 60 61 sed -i "s%${L_OLD_LINE}%${L_NEW_LINE}%" ${L_CONFIG_FILE} 62 rm -f ${L_CONFIG_FILE}.lock 63 break 64 else 65 (( L_TRY = L_TRY + 1 )) 66 DEM_log -3 "Fichier ${L_CONFIG_FILE} en cours de modif par un autre processus. Essai ${L_TRY}" 67 sleep 1 68 fi 69 70 done 30 71 31 local L_OLD_LINE=$( grep ${L_CONFIG_CARD} ${L_CONFIG_FILE} ) 32 [[ ${?} -eq 0 ]] || ( return 1 ; ) 33 local L_OLD_STATE=$( echo ${L_OLD_LINE} | awk '{print $2}' ) 34 [[ ${?} -eq 0 ]] || ( return 1 ; ) 35 36 L_NEW_LINE="${L_CONFIG_CARD} ${L_NEW_STATE}" 37 38 if [[ ! -f ${L_CONFIG_FILE}.lock ]] 72 if [[ ${L_TRY} -ge ${L_MAX_TRY} ]] 39 73 then 40 touch ${L_CONFIG_FILE}.lock41 sed -i "s%${L_OLD_LINE}%${L_NEW_LINE}%" ${L_CONFIG_FILE}42 rm -f ${L_CONFIG_FILE}.lock43 else44 74 DEM_log -0 "Erreur. Verrou sur le fichier : ${L_CONFIG_FILE}" 45 75 return 1 46 76 fi 47 77 48 78 return 0 49 79 } … … 75 105 # DEM_log [-0|-1|-2|-3] Message 76 106 # 77 local MESSAGE P_LINE 107 local MESSAGE P_LINE L_NAME 78 108 LOG_LEV=${LOG_LEV:-3} 79 109 local OPTARG OPTIND L_LOG=1 80 110 local L_DEM_LOG=${DEM_LOG:-dem_log.${$}} 81 111 82 while getopts 0123 l_name112 while getopts 0123 L_NAME 83 113 do 84 case ${ l_name} in114 case ${L_NAME} in 85 115 ( 0 ) L_LOG=1 ;; 86 116 ( 1 ) L_LOG=1 ;; … … 101 131 return 102 132 } 133
Note: See TracChangeset
for help on using the changeset viewer.