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 { |
---|
11 | ccc_mpp -n | grep gencmip6 | grep ' RUN ' |
---|
12 | } |
---|
13 | |
---|
14 | function get_pen { |
---|
15 | ccc_mpp -n | grep gencmip6 | grep ' PEN ' |
---|
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 | # ===================== |
---|
63 | LOCAL_DIR="${HOME}/ConsoGENCMIP6/output" |
---|
64 | SAVE_DIR="${CCCWORKDIR}/ConsoGENCMIP6/data" |
---|
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 | |
---|
94 | fi |
---|
95 | |
---|
96 | # 2- tous les jobs running et pending |
---|
97 | # ----------------------------------- |
---|
98 | |
---|
99 | if ( ${fg_all} ) ; then |
---|
100 | get_run > ${OUT_TOUSJOBS} |
---|
101 | get_pen >> ${OUT_TOUSJOBS} |
---|
102 | fi |
---|
103 | |
---|
104 | # Save files (WORK) |
---|
105 | # ================= |
---|
106 | if ( ! ${fg_dry} ) ; then |
---|
107 | Suffix=$( echo ${Today} | sed 's/-//g' ) |
---|
108 | [ -f ${SAVE_DIR}/${OUT_PENDING}_${Suffix} ] || echo "AAAA-MM-DD-HH:MM RUN PENDING" > ${SAVE_DIR}/${OUT_PENDING}_${Suffix} |
---|
109 | cat ${OUT_PENDING} >>${SAVE_DIR}/${OUT_PENDING}_${Suffix} |
---|
110 | cp ${OUT_TOUSJOBS} ${SAVE_DIR}/${OUT_TOUSJOBS}_${Suffix} |
---|
111 | fi |
---|
112 | |
---|