[2443] | 1 | #!/bin/bash |
---|
| 2 | # |
---|
| 3 | # cron pour garder trace de la compta et des volumes de fichiers crees |
---|
| 4 | # a executer chaque matin a 6h00 |
---|
| 5 | # ====================================================================== |
---|
| 6 | #. /etc/profile |
---|
| 7 | |
---|
| 8 | |
---|
| 9 | # Functions |
---|
| 10 | # ========= |
---|
| 11 | function get_gencmip6 { |
---|
| 12 | ccc_myproject | sed -e'1,/gencmip6/d' | grep -m 1 $1 |
---|
| 13 | } |
---|
| 14 | |
---|
| 15 | function get_gencmip6_login { |
---|
| 16 | ccc_myproject | sed -n -e'/gencmip6/,/^$/p' | head -n -1 | tail -n +3 |
---|
| 17 | } |
---|
| 18 | |
---|
| 19 | |
---|
| 20 | # Default values |
---|
| 21 | # ============== |
---|
| 22 | fg_dry=false |
---|
| 23 | fg_verbose=false |
---|
| 24 | |
---|
| 25 | fg_all=true |
---|
| 26 | fg_param=true |
---|
| 27 | fg_login=true |
---|
| 28 | fg_bilan=true |
---|
| 29 | fg_store=true |
---|
| 30 | |
---|
| 31 | # Get arguments from command line |
---|
| 32 | # =============================== |
---|
| 33 | while getopts :hdaltsv Opt ; do |
---|
| 34 | case $Opt in |
---|
| 35 | h) |
---|
| 36 | echo "usage: $0 [-h]Â [-a] [-b] [-l] [-s] [-d] [-v]" |
---|
| 37 | echo "" |
---|
| 38 | echo "options :" |
---|
| 39 | echo " -h : print this help and exit" |
---|
| 40 | echo " -d : dry run, no file produced" |
---|
| 41 | echo " -a : produce all files (default)" |
---|
| 42 | echo " -p : produce param file" |
---|
| 43 | echo " -b : produce bilan file" |
---|
| 44 | echo " -l : produce login file" |
---|
| 45 | echo " -s : produce store file" |
---|
| 46 | echo " -v : verbose" |
---|
| 47 | exit 0 ;; |
---|
| 48 | d) |
---|
| 49 | fg_dry=true |
---|
| 50 | ;; |
---|
| 51 | a) |
---|
| 52 | fg_all=true |
---|
| 53 | ;; |
---|
| 54 | t) |
---|
| 55 | fg_bilan=true |
---|
| 56 | fg_all=false |
---|
| 57 | fg_param=false |
---|
| 58 | fg_login=false |
---|
| 59 | fg_store=false |
---|
| 60 | ;; |
---|
| 61 | l) |
---|
| 62 | fg_login=true |
---|
| 63 | fg_all=false |
---|
| 64 | fg_param=false |
---|
| 65 | fg_bilan=false |
---|
| 66 | fg_store=false |
---|
| 67 | ;; |
---|
| 68 | s) |
---|
| 69 | fg_store=true |
---|
| 70 | fg_all=false |
---|
| 71 | fg_param=false |
---|
| 72 | fg_login=false |
---|
| 73 | fg_bilan=false |
---|
| 74 | ;; |
---|
| 75 | p) |
---|
| 76 | fg_param=true |
---|
| 77 | fg_all=false |
---|
| 78 | fg_login=false |
---|
| 79 | fg_bilan=false |
---|
| 80 | fg_store=false |
---|
| 81 | ;; |
---|
| 82 | v) |
---|
| 83 | fg_verbose=true |
---|
| 84 | ;; |
---|
| 85 | :) |
---|
| 86 | echo "$0: -"${OPTARG}" option: missing value" |
---|
| 87 | exit 1 |
---|
| 88 | ;; |
---|
| 89 | \?) |
---|
| 90 | echo "$0: -"${OPTARG}" option: not supported" |
---|
| 91 | exit 1 |
---|
| 92 | ;; |
---|
| 93 | esac |
---|
| 94 | done |
---|
| 95 | shift $(($OPTIND-1)) |
---|
| 96 | |
---|
| 97 | echo "fg_all = $fg_all" |
---|
| 98 | echo "fg_param = $fg_param" |
---|
| 99 | echo "fg_login = $fg_login" |
---|
| 100 | echo "fg_bilan = $fg_bilan" |
---|
| 101 | echo "fg_store = $fg_store" |
---|
| 102 | |
---|
| 103 | # Files and directories |
---|
| 104 | # ===================== |
---|
| 105 | LOCAL_DIR="/ccc/cont003/home/dsm/p86ipsl/ConsoGENCMIP6/output" |
---|
| 106 | SAVE_DIR="/ccc/work/cont003/dsm/p86ipsl/ConsoGENCMIP6/" |
---|
| 107 | |
---|
| 108 | if ( ${fg_dry} ) ; then |
---|
| 109 | OUT_PARAM="/dev/stdout" |
---|
| 110 | OUT_LOGIN="/dev/stdout" |
---|
| 111 | OUT_BILAN="/dev/stdout" |
---|
| 112 | OUT_STORE="/dev/stdout" |
---|
| 113 | else |
---|
| 114 | OUT_PARAM="OUT_CONSO_PARAM_v4" |
---|
| 115 | OUT_LOGIN="OUT_CONSO_LOGIN_v4" |
---|
| 116 | OUT_BILAN="OUT_CONSO_BILAN_v4" |
---|
| 117 | OUT_STORE="OUT_CONSO_STORE_v4" |
---|
| 118 | fi |
---|
| 119 | |
---|
| 120 | #Today=$( date +%F ) |
---|
| 121 | Today=$( ccc_myproject | grep gencmip6 | gawk '{print $NF}' ) |
---|
| 122 | |
---|
| 123 | |
---|
| 124 | # Produce files |
---|
| 125 | # ============= |
---|
| 126 | |
---|
| 127 | cd ${LOCAL_DIR} |
---|
| 128 | |
---|
| 129 | # 1- Parametres du projet |
---|
| 130 | # ----------------------- |
---|
| 131 | echo "OUT_CONSO_PARAM" |
---|
| 132 | |
---|
| 133 | echo "{" > ${OUT_PARAM} |
---|
| 134 | ccc_myproject | grep gencmip6 | \ |
---|
| 135 | gawk '{printf " \"project\": \"%s\",\n", $4}' \ |
---|
| 136 | >> ${OUT_PARAM} |
---|
| 137 | get_gencmip6 deadline | \ |
---|
| 138 | gawk '{printf " \"deadline\": \"%10s\",\n", $NF}' \ |
---|
| 139 | >> ${OUT_PARAM} |
---|
| 140 | get_gencmip6 Allocated | \ |
---|
| 141 | gawk '{printf " \"alloc\": %10.2f,\n", $NF}' \ |
---|
| 142 | >> ${OUT_PARAM} |
---|
| 143 | echo "}" >> ${OUT_PARAM} |
---|
| 144 | |
---|
| 145 | # 2- Conso totale par jour |
---|
| 146 | # ------------------------ |
---|
| 147 | # on garde le total, date en tete en accumulant dans le fichier : |
---|
| 148 | #Â OUT_CONSO_BILAN |
---|
| 149 | # if ( ${fg_all} || ${fg_bilan} ) ; then |
---|
| 150 | # printf "%10s " ${Today} >> ${OUT_BILAN} |
---|
| 151 | # get_gencmip6 Total | \ |
---|
| 152 | # gawk '{printf " %s %10.2f hours ", "total", $2}' \ |
---|
| 153 | # >> ${OUT_BILAN} |
---|
| 154 | # get_gencmip6 Allocated | \ |
---|
| 155 | # gawk '{printf " %s %10.2f hours ", "alloc", $2}' \ |
---|
| 156 | # >> ${OUT_BILAN} |
---|
| 157 | # get_gencmip6 Suggested | \ |
---|
| 158 | # gawk '{printf " %s %7s ", "use_theo", $NF}' \ |
---|
| 159 | # >> ${OUT_BILAN} |
---|
| 160 | # get_gencmip6 Real | \ |
---|
| 161 | # gawk '{printf " %s %7s ", "use_real", $NF}' \ |
---|
| 162 | # >> ${OUT_BILAN} |
---|
| 163 | # printf "\n" >> ${OUT_BILAN} |
---|
| 164 | # fi |
---|
| 165 | |
---|
| 166 | if ( ${fg_all} || ${fg_bilan} ) ; then |
---|
| 167 | echo "OUT_CONSO_BILAN" |
---|
| 168 | |
---|
| 169 | printf "%10s " ${Today} >> ${OUT_BILAN} |
---|
| 170 | get_gencmip6 Total | \ |
---|
| 171 | gawk '{printf " %10.2f", $2}' \ |
---|
| 172 | >> ${OUT_BILAN} |
---|
| 173 | get_gencmip6 Real | \ |
---|
| 174 | gawk '{printf " %7s", $NF}' \ |
---|
| 175 | >> ${OUT_BILAN} |
---|
| 176 | get_gencmip6 Suggested | \ |
---|
| 177 | gawk '{printf " %7s", $NF}' \ |
---|
| 178 | >> ${OUT_BILAN} |
---|
| 179 | printf "\n" >> ${OUT_BILAN} |
---|
| 180 | fi |
---|
| 181 | |
---|
| 182 | # 2b- Conso theorique par jour |
---|
| 183 | # ---------------------------- |
---|
| 184 | # on garde le total, date en tete en accumulant dans le fichier : |
---|
| 185 | #Â OUT_CONSO_UTHEO |
---|
| 186 | if ( ${fg_all} || ${fg_bilan} ) ; then |
---|
| 187 | echo "OUT_CONSO_UTHEO" |
---|
| 188 | |
---|
| 189 | printf "%10s " ${Today} >> ${OUT_BILAN} |
---|
| 190 | get_gencmip6 Suggested | \ |
---|
| 191 | gawk '{printf " %7s", $NF}' \ |
---|
| 192 | >> ${OUT_BILAN} |
---|
| 193 | printf "\n" >> ${OUT_BILAN} |
---|
| 194 | fi |
---|
| 195 | |
---|
| 196 | # 3- Conso par login (HOME) |
---|
| 197 | # ------------------------- |
---|
| 198 | # on garde la trace de chaque login, date en tete, en remplacant le |
---|
| 199 | #Â fichier a chaque fois : OUT_CONSO_LOGIN |
---|
| 200 | if ( ${fg_all} || ${fg_login} ) ; then |
---|
| 201 | echo "OUT_CONSO_LOGIN" |
---|
| 202 | |
---|
| 203 | # get_gencmip6_login | \ |
---|
| 204 | # gawk -v Today=$Today '{printf "%10s %-10s %10.2f hours\n", Today, $1, $2}' \ |
---|
| 205 | # > ${OUT_LOGIN} |
---|
| 206 | |
---|
| 207 | printf "%-10s %-9s %-10s\n" "date" "login" "conso(hours)" > ${OUT_LOGIN} |
---|
| 208 | get_gencmip6_login | \ |
---|
| 209 | gawk -v Today=$Today '{printf "%10s %-10s %10.2f\n", Today, $1, $2}' \ |
---|
| 210 | >> ${OUT_LOGIN} |
---|
| 211 | fi |
---|
| 212 | |
---|
| 213 | # 4- volume cree sur STORE |
---|
| 214 | # ------------------------ |
---|
| 215 | # par login qui a consomme, en remplacant le fichier a chaque fois : |
---|
| 216 | #Â OUT_CONSO_STORE |
---|
| 217 | if ( ${fg_all} || ${fg_store} ) ; then |
---|
| 218 | echo "OUT_CONSO_STORE" |
---|
| 219 | |
---|
| 220 | printf "%-10s %-10s %6s %s\n" "date" "login" "size" "dirname" > ${OUT_LOGIN} |
---|
| 221 | for login in $( get_gencmip6_login | \ |
---|
| 222 | gawk '{if ($NF != 0.00) print $1}' ) ; do |
---|
| 223 | for dirname in $( ls -d $(ccc_home -A -u ${login})/IGCM_OUT/* ) ; do |
---|
| 224 | # printf "%10s %-10s %6s %s\n" \ |
---|
| 225 | # ${Today} ${login} \ |
---|
| 226 | # $( du -sbh ${dirname} ) |
---|
| 227 | printf "%10s %-10s %6s %s\n" \ |
---|
| 228 | ${Today} ${login} \ |
---|
| 229 | $( du -sbh ${dirname} ) |
---|
| 230 | done |
---|
| 231 | done >> ${OUT_STORE} |
---|
| 232 | fi |
---|
| 233 | |
---|
| 234 | # Save files (WORK) |
---|
| 235 | # ================= |
---|
| 236 | if ( ! ${fg_dry} ) ; then |
---|
| 237 | Suffix=$( echo ${Today} | sed 's/-//g' ) |
---|
| 238 | cp ${OUT_PARAM} ${SAVE_DIR}/${OUT_PARAM}_${Suffix} |
---|
| 239 | cp ${OUT_LOGIN} ${SAVE_DIR}/${OUT_LOGIN}_${Suffix} |
---|
| 240 | cp ${OUT_BILAN} ${SAVE_DIR}/${OUT_BILAN}_${Suffix} |
---|
| 241 | cp ${OUT_STORE} ${SAVE_DIR}/${OUT_STORE}_${Suffix} |
---|
| 242 | fi |
---|
| 243 | |
---|