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 ""
95  echo "--------------------------------"
96  echo "input: $input"
97  echo "par1 = ${par1}"
98  echo "par2 = ${par2}"
99  echo "par3 = ${par3}"
100  echo "par4 = ${par4}"
101  echo "par5 = ${par5}"
102  echo "par6 = ${par6}"
103  echo "par7 = ${par7}"
104  echo "--------------------------------"
105  echo ""
106 
107 
108  format='+%Y/%m/%d-%H:%M:%S'
109 
110  date $format
111  echo ""
112  echo "--------------------------------"
113  echo "RUNNING ON HOST : " $(hostname)
114  echo "WORKING DIR : " $(pwd)
115  echo "USER is : " $USER
116  echo "DISK USAGE /tmp :"
117  df -h /tmp
118  echo "--------------------------------"
119 
120 
121  echo ""
122  echo "--------------------------------"
123  echo " DEBUG INFO"
124  echo "==> Kernel version information :"
125  uname -a
126  echo "==> C compiler that built the kernel:"
127  cat /proc/version
128  echo "==> load on this node:"
129  mpstat -P ALL
130  echo "==> actual compiler is"
131  gcc -v
132  echo "--------------------------------"
133  echo ""
134 
135 
136 
137 
138 
139 
140 
141 
142 ###################################################################
143 ###################################################################
144 # EDIT THIS PART TO EXECUTE YOUR JOB!
145 
146 
147 
148 #----------------------
149 # evironment
150  echo "==> running enironment script ${par1}"
151 . ${par1}
152 #----------------------
153 
154  echo "==> ldd ${par2}"
155  ldd $par2
156 
157  echo "==> execute program "
158 
159  useVertex=0
160  if [[ $par4 =~ '#' ]] # format file#filevertex : use vertex ntuple
161  then
162  useVertex=1
163  fi
164 
165  if [ $useVertex -eq 0 ]
166  then
167  files=$(echo $par4 | sed 's/,/ /g')
168  for file in $files
169  do
170  echo "==> $par2 $par3 $file $par5 $par6 $par7"
171  time $par2 $par3 $file $par5 $par6 $par7
172  # prog outdir outfile type nev switch
173  done
174  else
175  files=$(echo $par4 | sed 's/,/ /g')
176  for file in $files
177  do
178  outfile=$(echo $file | cut -d "#" -f1)
179  vertexfile=$(echo $file | cut -d "#" -f2)
180  echo "==> $par2 $par3 $outfile $par5 $par6 $par7 $vertexfile"
181  time $par2 $par3 $outfile $par5 $par6 $par7 $vertexfile
182  # prog outdir outfile type nev switch $vertexntuple
183  done
184  fi
185 
186 #---------------------------------------------------------------------
187 
188 
189 
190 # END EDIT YOUR EXECUT JOB!
191 ###################################################################
192 ###################################################################
193 
194 
195 
196 
197 
198 
199 
200  echo ""
201  echo "--------------------------------"
202  echo "Job with params "
203  echo "par1 = ${par1}"
204  echo "par2 = ${par2}"
205  echo "par3 = ${par3}"
206  echo "par4 = ${par4}"
207  echo "par5 = ${par5}"
208  echo "par6 = ${par6}"
209  echo "par7 = ${par7}"
210  echo "finsished!"
211  echo "--------------------------------"
212  echo ""
213 
214  host=$(hostname)
215 
216  echo ""
217  echo "--------------------------------"
218  echo "MONITOR ENVIRONMENT:"
219  echo "SLURM_JOBID : " $SLURM_JOBID
220  echo "SLURM_ARRAY_JOB_ID : " $SLURM_ARRAY_JOB_ID
221  echo "SLURM_ARRAY_TASK_ID: " $SLURM_ARRAY_TASK_ID
222  echo "RUNNING ON HOST : " $(hostname)
223  echo "WORKING DIR : " $(pwd)
224  echo "USER is : " $USER
225  echo "DISK USAGE /tmp :------------"
226  df -h /tmp
227  echo "--------------------------------"
228 
229 
230 
231 
232  date $format
233 
234  # when running single file move log file name
235  # to output filename
236  if [ "$par4" == "$files" ]
237  then
238  echo "MOVING LOG FILE"
239  outfile=$(basename $par4)
240  mv ${pathoutputlog}/slurm-${SLURM_ARRAY_JOB_ID}_${SLURM_ARRAY_TASK_ID}.out ${pathoutputlog}/${outfile}.log
241  fi