[2433] | 1 | #!/bin/bash |
---|
| 2 | # |
---|
| 3 | # cron pour garder trace des jobs running et en attente |
---|
| 4 | # a executer chaque heure |
---|
| 5 | # ====================================================================== |
---|
| 6 | #. /etc/profile |
---|
| 7 | |
---|
| 8 | # Functions |
---|
| 9 | # ========= |
---|
| 10 | function get_run { |
---|
[2844] | 11 | ccc_mpp -n | grep cmip6 | grep ' RUN ' |
---|
[2433] | 12 | } |
---|
| 13 | |
---|
| 14 | function get_pen { |
---|
[2844] | 15 | ccc_mpp -n | grep cmip6 | grep ' PEN ' |
---|
[2433] | 16 | } |
---|
| 17 | |
---|
| 18 | |
---|
| 19 | # Default values |
---|
| 20 | # ============== |
---|
| 21 | fg_dry=false |
---|
| 22 | fg_verbose=false |
---|
| 23 | |
---|
| 24 | fg_all=true |
---|
| 25 | |
---|
| 26 | # Get arguments from command line |
---|
| 27 | # =============================== |
---|
| 28 | while getopts :hdaltsv Opt ; do |
---|
| 29 | case $Opt in |
---|
| 30 | h) |
---|
| 31 | echo "usage: $0 [-h]Â [-a] [-d] [-v]" |
---|
| 32 | echo "" |
---|
| 33 | echo "options :" |
---|
| 34 | echo " -h : print this help and exit" |
---|
| 35 | echo " -d : dry run, no file produced" |
---|
| 36 | echo " -a : produce all files (default)" |
---|
| 37 | echo " -v : verbose" |
---|
| 38 | exit 0 ;; |
---|
| 39 | d) |
---|
| 40 | fg_dry=true |
---|
| 41 | ;; |
---|
| 42 | a) |
---|
| 43 | fg_all=true |
---|
| 44 | ;; |
---|
| 45 | v) |
---|
| 46 | fg_verbose=true |
---|
| 47 | ;; |
---|
| 48 | :) |
---|
| 49 | echo "$0: -"${OPTARG}" option: missing value" |
---|
| 50 | exit 1 |
---|
| 51 | ;; |
---|
| 52 | \?) |
---|
| 53 | echo "$0: -"${OPTARG}" option: not supported" |
---|
| 54 | exit 1 |
---|
| 55 | ;; |
---|
| 56 | esac |
---|
| 57 | done |
---|
| 58 | shift $(($OPTIND-1)) |
---|
| 59 | |
---|
| 60 | |
---|
| 61 | # Files and directories |
---|
| 62 | # ===================== |
---|
[2437] | 63 | LOCAL_DIR="${HOME}/ConsoGENCMIP6/output" |
---|
| 64 | SAVE_DIR="${CCCWORKDIR}/ConsoGENCMIP6/data" |
---|
[2433] | 65 | |
---|
| 66 | if ( ${fg_dry} ) ; then |
---|
| 67 | OUT_PENDING="/dev/stdout" |
---|
| 68 | OUT_TOUSJOBS="/dev/stdout" |
---|
| 69 | else |
---|
| 70 | OUT_PENDING="OUT_JOBS_PENDING" |
---|
| 71 | OUT_TOUSJOBS="OUT_TOUSJOBS" |
---|
| 72 | fi |
---|
| 73 | |
---|
| 74 | Today=$( date +"%F" ) |
---|
| 75 | Now=$( date +"%F-%R" ) |
---|
| 76 | |
---|
| 77 | |
---|
| 78 | # Produce files |
---|
| 79 | # ============= |
---|
| 80 | |
---|
| 81 | cd ${LOCAL_DIR} |
---|
| 82 | |
---|
| 83 | # 1- Nombre de procs running et pending |
---|
| 84 | # ------------------------------------- |
---|
| 85 | if ( ${fg_all} ) ; then |
---|
| 86 | get_run | \ |
---|
| 87 | gawk -v Now="$Now" ' {NPROC+=$4} END {printf "%16s %-6d ", Now, NPROC }' \ |
---|
| 88 | > ${OUT_PENDING} |
---|
| 89 | get_pen | \ |
---|
| 90 | gawk ' {NPROC+=$4} END {printf " %-6d ", NPROC }' \ |
---|
| 91 | >> ${OUT_PENDING} |
---|
| 92 | printf "\n" >> ${OUT_PENDING} |
---|
| 93 | fi |
---|
| 94 | |
---|
| 95 | # 2- tous les jobs running et pending |
---|
| 96 | # ----------------------------------- |
---|
| 97 | |
---|
| 98 | if ( ${fg_all} ) ; then |
---|
| 99 | get_run > ${OUT_TOUSJOBS} |
---|
| 100 | get_pen >> ${OUT_TOUSJOBS} |
---|
| 101 | fi |
---|
| 102 | |
---|
| 103 | # Save files (WORK) |
---|
| 104 | # ================= |
---|
| 105 | if ( ! ${fg_dry} ) ; then |
---|
| 106 | Suffix=$( echo ${Today} | sed 's/-//g' ) |
---|
[2437] | 107 | [ -f ${SAVE_DIR}/${OUT_PENDING}_${Suffix} ] || echo "AAAA-MM-DD-HH:MM RUN PENDING" > ${SAVE_DIR}/${OUT_PENDING}_${Suffix} |
---|
[2433] | 108 | cat ${OUT_PENDING} >>${SAVE_DIR}/${OUT_PENDING}_${Suffix} |
---|
| 109 | cp ${OUT_TOUSJOBS} ${SAVE_DIR}/${OUT_TOUSJOBS}_${Suffix} |
---|
| 110 | fi |
---|
| 111 | |
---|