1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
#!/bin/sh
# Script will be able to do next things:
# -- run MILLE, PEDE or MILLEPEDE jobs
# -- check out for FAILs and resubmit it
# -- send an email when MILLE, PEDE or MILLEPEDE jobs are ready
# you can setup time delay in FAILs checking (-t)
# plese setup mail adress to get INFO about jobs status
help(){
echo "*************************************************************************************"
echo " "
echo " Options:"
echo "-h, --help show brief help"
echo "-n, specify N mille jobs, default is Njobs = 429"
echo "-m, run MILLE jobs only"
echo "-p, run PEDE jobs only"
echo "-mp, run MILLEPEDE jobs"
echo "-email, specify you e-mail adress, or manually change it in the script"
echo "-t, specify time of script sleeping, Example : -t 10m, -t 20s"
echo ""
echo " Run example: sh nextMPS.sh -n 429 -m -email uname@gmail.com -t 5m"
echo " "
echo "*************************************************************************************"
exit 0
}
if [ "$#" == "0" ]; then
echo "This script needs arguments. Please use in this way:"
help
exit 1
fi
Njobs=429
echo "*************************************************************************************"
while (("$#")); do
case "$1" in
-h|--help)
help
exit 0
;;
-n)
shift
if (("$#")); then
Njobs=$1
echo "You specified Njobs = $Njobs"
else
echo "Number of jobs is not specified. Please use -h, --help"
exit 1
fi
shift
;;
-m)
if (("$#")); then
echo "You will run MILLE jobs only"
runstatus="m"
#echo "Runstatus = $runstatus"
fi
shift
;;
-p)
if (("$#")); then
echo "You will run PEDE jobs only"
runstatus="p"
#echo "Runstatus = $runstatus"
fi
shift
;;
-mp)
if (("$#")); then
echo "You will run MILLEPEDE jobs"
runstatus="mp"
#echo "Runstatus = $runstatus"
fi
shift
;;
-email)
shift
if (("$#")); then
echo "Job status will be send to the email adress: $1"
email="$1"
# echo "Email = $email"
else
email="0"
echo "You did not specified e-mail adress"
fi
shift
;;
-t)
shift
if (("$#")); then
TimeSleep=$1
time_flag="spec"
echo "You specified time script sleeping = $1"
else
echo "TimeSleep is not specified. Please use -h, --help"
exit 1
fi
shift
;;
*)
break
;;
esac
done
echo "*************************************************************************************"
if [ "$runstatus" = "m" ] || [ "$runstatus" = "mp" ]; then
if [ ! -f nextMPS.log ]; then
echo "nextMPS.log will be created"
else
rm nextMPS.log
echo "Old nextMPS.log file removed"
fi
fi
TESTJOBS(){
# testing your Jobs for FAIL status and resubmitting
while [ "$(mps_stat.py | grep OK | wc -l)" != "$Njobs" ]
do
if [ "$time_flag" = "spec" ]; then
sleep $TimeSleep
else
sleep 10m
fi
echo "Fetch DONE jobs"
mps_fetch.py
if [ $(mps_stat.py | grep FAIL | wc -l) -ne 0 ];
then
Njfails=$(echo "$(mps_stat.py | grep FAIL | wc -l)")
echo "Njob fails = $Njfails"
echo "Retry failed jobs"
mps_retry.pl FAIL
mps_fire.py $Njfails
else
NjOK=$(mps_stat.py | grep OK | wc -l)
echo " Checking jobs . Njobs OK = $NjOK"
fi
done
}
MILLERUN(){
# Setup your folder for MILLEPEDE run. Job status after: PEND
./setup_align.pl
# Send your jobs for running. Job status after: RUN
mps_fire.py $Njobs
# testing your MILLE jobs for FAIL status and resubmitting
TESTJOBS
if [ "$email" != "0" ]; then
(echo "Subject: MILLE jobs ready"; echo "Your MILLE jobs are ready. Njobs mille OK = $NjOK";) | sendmail $email
else echo "You did not setup e-mail"
fi
}
PEDERUN(){
mps_fire.py -m
Njobs=$[Njobs+1]
TESTJOBS
if [ "$email" != "0" ]; then
(echo "Subject: PEDE jobs ready"; echo "Your PEDE jobs are ready. Njobs pede OK = 1";) | sendmail $email
else echo "You did not setup e-mail"
fi
}
MILLEPEDERUN() {
MILLERUN
PEDERUN
}
# Run part:
if [ "$runstatus" = "m" ]; then
echo "MILLE jobs will be run"
MILLERUN >> nextMPS.log
else
if [ "$runstatus" = "p" ]; then
echo "PEDE jobs will be run"
PEDERUN >> nextMPS.log
else
if [ "$runstatus" = "mp" ]; then
echo "MILLEPEDE jobs will be run"
MILLEPEDERUN >> nextMPS.log
fi
fi
fi
# END SCRIPT
echo "THE END"
|