[2411] | 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 | # Default values |
---|
| 9 | # ============== |
---|
| 10 | fg_dry=false |
---|
| 11 | fg_verbose=false |
---|
| 12 | |
---|
| 13 | # Get arguments from command line |
---|
| 14 | # =============================== |
---|
| 15 | while getopts :hdv Opt ; do |
---|
| 16 | case $Opt in |
---|
| 17 | h) |
---|
| 18 | echo "usage: $0 [-d] [-v]" |
---|
| 19 | echo "" |
---|
| 20 | echo "options :" |
---|
| 21 | echo " -h : print this help and exit" |
---|
| 22 | echo " -d : dry run, no file produced" |
---|
| 23 | echo " -v : verbose" |
---|
| 24 | exit 0 ;; |
---|
| 25 | d) |
---|
| 26 | fg_dry=true |
---|
| 27 | ;; |
---|
| 28 | v) |
---|
| 29 | fg_verbose=true |
---|
| 30 | ;; |
---|
| 31 | :) |
---|
| 32 | echo "$0: -"${OPTARG}" option: missing value" |
---|
| 33 | exit 1 |
---|
| 34 | ;; |
---|
| 35 | \?) |
---|
| 36 | echo "$0: -"${OPTARG}" option: not supported" |
---|
| 37 | exit 1 |
---|
| 38 | ;; |
---|
| 39 | esac |
---|
| 40 | done |
---|
| 41 | shift $(($OPTIND-1)) |
---|
| 42 | |
---|
| 43 | |
---|
| 44 | # Files and directories |
---|
| 45 | # ===================== |
---|
| 46 | LOCAL_DIR="/ccc/cont003/home/dsm/p86ipsl/CCC_MYPROJECT/output" |
---|
| 47 | SAVE_DIR="/ccc/work/cont003/dsm/p86ipsl/CCC_MYPROJECT/output" |
---|
| 48 | |
---|
| 49 | if ( ${fg_dry} ) ; then |
---|
| 50 | OUT_LOGIN="/dev/stdout" |
---|
| 51 | OUT_TOTAL="/dev/stdout" |
---|
| 52 | OUT_STORE="/dev/stdout" |
---|
| 53 | else |
---|
| 54 | OUT_LOGIN="${LOCAL_DIR}/OUT_CONSO_LOGIN" |
---|
| 55 | OUT_TOTAL="${LOCAL_DIR}/OUT_CONSO_ALL" |
---|
| 56 | OUT_STORE="${LOCAL_DIR}/OUT_CONSO_STORE" |
---|
| 57 | fi |
---|
| 58 | |
---|
| 59 | Today=$( date +%F ) |
---|
| 60 | |
---|
| 61 | |
---|
| 62 | # Produce files |
---|
| 63 | # ============= |
---|
| 64 | |
---|
| 65 | # 1- Conso par login (HOME) |
---|
| 66 | # ------------------------- |
---|
| 67 | # on garde la trace de chaque login, date en tete, en remplacant le fichier a chaque fois : OUT_CONSO_LOGIN |
---|
| 68 | ccc_myproject | \ |
---|
| 69 | sed -e'1,/gencmip6/d' | \ |
---|
| 70 | sed -e'/Total/,$d' | \ |
---|
| 71 | grep -v Login | \ |
---|
| 72 | grep -v '^$' | \ |
---|
| 73 | gawk -v Today=$Today '{printf "%10s %-10s %10.2f hours\n", Today, $1, $2}' \ |
---|
| 74 | > ${OUT_LOGIN} |
---|
| 75 | |
---|
| 76 | # 2- Conso total par jour |
---|
| 77 | # ----------------------- |
---|
| 78 | # on garde le total, date en tete en accumulant dans le fichier : OUT_CONSO_ALL |
---|
| 79 | ccc_myproject | \ |
---|
| 80 | sed -e'1,/gencmip6/d' | \ |
---|
| 81 | grep -m 1 Total | \ |
---|
| 82 | gawk -v Today=$Today '{printf "%10s %-10s %10.2f hours\n", Today, "Total", $2}' \ |
---|
| 83 | >> ${OUT_TOTAL} |
---|
| 84 | |
---|
| 85 | # 3- volume cree sur STORE |
---|
| 86 | # ------------------------ |
---|
| 87 | # par login qui a consomme, en remplacant le fichier a chaque fois : OUT_CONSO_STORE |
---|
| 88 | for i in $( ccc_myproject | \ |
---|
| 89 | sed -e'1,/gencmip6/d' | \ |
---|
| 90 | sed -e'/Total/,$d' | \ |
---|
| 91 | grep -v Login | \ |
---|
| 92 | grep -v '^$/' | \ |
---|
| 93 | grep -v 0.0 | \ |
---|
| 94 | gawk '{print $1}' ) |
---|
| 95 | do |
---|
| 96 | printf "%-10s %6s %s\n" $i $( du -sbh $(ccc_home -A -u $i)/IGCM_OUT/IPSLCM6 ) |
---|
| 97 | done > ${OUT_STORE} |
---|
| 98 | |
---|
| 99 | |
---|
| 100 | # Save files (WORK) |
---|
| 101 | # ================= |
---|
| 102 | if ( ! ${fg_dry} ) ; then |
---|
| 103 | cp ${LOCAL_DIR}/OUT_CONSO_LOGIN ${SAVE_DIR}/OUT_CONSO_LOGIN_${Today} |
---|
| 104 | cp ${LOCAL_DIR}/OUT_CONSO_ALL ${SAVE_DIR}/OUT_CONSO_ALL_${Today} |
---|
| 105 | cp ${LOCAL_DIR}/OUT_CONSO_STORE ${SAVE_DIR}/OUT_CONSO_STORE_${Today} |
---|
| 106 | fi |
---|
| 107 | |
---|