HYDRA_development_version
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
jobScript_SL.sh
Go to the documentation of this file.
1 #!/bin/bash
2 
3 # This is the generic jobscript to run jobs on GridEngine
4 #
5 # The script supports up to 7 parameters.
6 #
7 # The user specific part of the script is indicated below.
8 
9 
10 
11 par1="no"
12 par2="no"
13 par3="no"
14 par4="no"
15 par5="no"
16 par6="no"
17 par7="no"
18 
19 if [ $# -lt 1 ]
20 then
21  echo "Usage : jobScript.sh par1 [par2] [par2] [par3] [par4] [par5] [par6] [par7]"
22  sleep 3
23  exit
24 fi
25 
26 case "$#" in
27 
28 1) par1=$1
29  ;;
30 2) par1=$1
31  par2=$2
32  ;;
33 3) par1=$1
34  par2=$2
35  par3=$3
36  ;;
37 4) par1=$1
38  par2=$2
39  par3=$3
40  par4=$4
41  ;;
42 5) par1=$1
43  par2=$2
44  par3=$3
45  par4=$4
46  par5=$5
47  ;;
48 6) par1=$1
49  par2=$2
50  par3=$3
51  par4=$4
52  par5=$5
53  par6=$6
54  ;;
55 7) par1=$1
56  par2=$2
57  par3=$3
58  par4=$4
59  par5=$5
60  par6=$6
61  par7=$7
62  ;;
63 *) echo "Unsupported number of arguments"
64  echo "Usage : jobScript.sh par1 [par2] [par2] [par3] [par4] [par5] [par6] [par7]"
65  exit
66  ;;
67 esac
68 
69  echo ""
70  echo "--------------------------------"
71  echo "SLURM_JOBID : " $SLURM_JOBID
72  echo "SLURM_ARRAY_JOB_ID : " $SLURM_ARRAY_JOB_ID
73  echo "SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID
74  echo "--------------------------------"
75  echo ""
76 
77  arrayoffset=$par3
78  pathoutputlog=$par2
79  jobarrayFile=$par1
80 
81  ((myline=${SLURM_ARRAY_TASK_ID}+${arrayoffset}))
82  # map back params for the job
83  input=$(awk "NR==${myline}" $jobarrayFile) # get all params for this job
84 
85 
86  par1=$(echo $input | cut -d " " -f1)
87  par2=$(echo $input | cut -d " " -f2)
88  par3=$(echo $input | cut -d " " -f3)
89  par4=$(echo $input | cut -d " " -f4)
90  par5=$(echo $input | cut -d " " -f5)
91  par6=$(echo $input | cut -d " " -f6)
92  par7=$(echo $input | cut -d " " -f7)
93 
94  echo "input: $input"
95  echo "par1 = ${par1}"
96  echo "par2 = ${par2}"
97  echo "par3 = ${par3}"
98  echo "par4 = ${par4}"
99  echo "par5 = ${par5}"
100  echo "par6 = ${par6}"
101  echo "par7 = ${par7}"
102 
103 
104  format='+%Y/%m/%d-%H:%M:%S'
105 
106  host=$(hostname)
107 
108  date $format
109  echo ""
110  echo "--------------------------------"
111  echo "RUNNING ON HOST : " $host
112  echo "WORKING DIR : " $(pwd)
113  echo "USER is : " $USER
114  echo "DISK USAGE /tmp :"
115  df -h /tmp
116  echo "--------------------------------"
117 
118 
119  echo ""
120  echo "--------------------------------"
121  echo "par1 = ${par1}"
122  echo "par2 = ${par2}"
123  echo "par3 = ${par3}"
124  echo "par4 = ${par4}"
125  echo "par5 = ${par5}"
126  echo "par6 = ${par6}"
127  echo "par7 = ${par7}"
128  echo "--------------------------------"
129  echo ""
130 
131 
132 
133  echo ""
134  echo "--------------------------------"
135  echo " DEBUG INFO"
136  echo "==> Kernel version information :"
137  uname -a
138  echo "==> C compiler that built the kernel:"
139  cat /proc/version
140  echo "==> load on this node:"
141  mpstat -P ALL
142  echo "==> actual compiler is"
143  gcc -v
144  echo "--------------------------------"
145  echo ""
146 
147 
148 
149 
150 
151 
152 
153 
154 ###################################################################
155 ###################################################################
156 # EDIT THIS PART TO EXECUTE YOUR JOB!
157 
158 
159 
160 #----------------------
161 # evironment
162  echo "==> running enironment script ${par1}"
163 . ${par1}
164 #----------------------
165 
166  echo "==> ldd ${par2}"
167  ldd $par2
168 
169  echo "==> execute program "
170 
171  mydir=$(pwd)
172 
173  mkdir sub_${myline}
174  cd sub_${myline}
175 
176  mysubdir=$(pwd)
177 
178  echo created subdir $mysubdir
179  echo create link to input
180  ln -s ../input input
181 
182 # echo "==> ${par2} -b -c -f ${par3}"
183 # time $par2 -b -c -f $par3
184  files=$(echo $par3 | sed 's/,/ /g')
185  for file in $files
186  do
187 
188  entr=$(cat /proc/sys/kernel/random/entropy_avail)
189 
190  echo check entropy : ${entr}
191  date
192 
193  filenumber=0
194  if [[ $file =~ _([0-9]*).dat$ ]];
195  then
196  filenumber=${BASH_REMATCH[1]}
197  echo "filenumber is ${filenumber}"
198  fi
199 
200  replace=$(cat ../replaceMask.txt)
201  replace=$(echo $replace | sed "s/XXX/$filenumber/g")
202  echo "Setting up replace : $replace"
203 
204  echo "==> Execute replace"
205  $replace
206 
207  echo "==> ${par2} -b -c -f ${file}"
208  time $par2 -b -c -f $file
209  date
210 
211  infile=$(../extract_outfile.pl -i ${file} ) # output file of hgeant
212  outdir=$(dirname $infile)
213  outfile=$(basename $infile)
214 
215  ../testFiles2 $infile # return 0 if ok
216 
217  good=$?
218 
219  if [ $good -ne 0 ]
220  then
221  echo "FILE $infile is corrupted, will be removed!"
222  rm -f $infile
223  par6="no" # do not do vertex ectract
224 
225  if [ ! -d $outdir/crash ]
226  then
227  mkdir -p $outdir/crash
228  fi
229  echo "write log $outfile ==> $outdir/crash/${outfile}.txt"
230  echo $outfile > $outdir/crash/${outfile}.txt
231  fi
232 
233  if [ $par6 != "no" ]
234  then
235 
236  outdir=${outdir}/vertex
237 
238  echo "==> ../${par6} $infile $outdir -1"
239  time ../${par6} $infile $outdir -1
240 
241  fi
242 
243  done
244 
245  cd ${mydir}
246 
247  if [ -d sub_${myline} ]
248  then
249  echo remove subdir sub_${myline}
250  rm -rf sub_${myline}
251  fi
252 
253 # END EDIT YOUR EXECUT JOB!
254 ###################################################################
255 ###################################################################
256 
257 
258 
259 
260 
261 
262 
263  echo ""
264  echo "--------------------------------"
265  echo "Job with params "
266  echo "par1 = ${par1}"
267  echo "par2 = ${par2}"
268  echo "par3 = ${par3}"
269  echo "par4 = ${par4}"
270  echo "par5 = ${par5}"
271  echo "par6 = ${par6}"
272  echo "par7 = ${par7}"
273  echo "finsished!"
274  echo "--------------------------------"
275  echo ""
276 
277 
278  echo ""
279  echo "--------------------------------"
280  echo "MONITOR ENVIRONMENT:"
281  echo "SLURM_JOBID : " $SLURM_JOBID
282  echo "SLURM_ARRAY_JOB_ID : " $SLURM_ARRAY_JOB_ID
283  echo "SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID
284  echo "RUNNING ON HOST : " $(hostname)
285  echo "WORKING DIR : " $(pwd)
286  echo "USER is : " $USER
287  echo "DISK USAGE /tmp :------------"
288  df -h /tmp
289  echo "--------------------------------"
290 
291 
292  date $format
293 
294 
295  sleep 2
296 
297  filename=""
298  ct=0
299  files=$(echo $par3 | sed 's/,/ /g')
300  for file in $files
301  do
302  if [ $ct -eq 0 ]
303  then
304  filename=$(basename $file)
305  filename=$(echo $filename | sed 's/.log//')
306  fi
307  ((ct+=1))
308  done
309 
310  if [ $ct -gt 1 ]
311  then
312  filename=${filename}_part
313  fi
314 
315  mv ${pathoutputlog}/slurm-${SLURM_ARRAY_JOB_ID}_${SLURM_ARRAY_TASK_ID}.out ${pathoutputlog}/${filename}.log
316 
317