1 |
#/bin/bash
|
2 |
|
3 |
# ------------------------------------------------------------------------------- #
|
4 |
# resubmitConfig.sh -- creates a config file to resubmit jobs that failed #
|
5 |
# #
|
6 |
# description: This script will search the output dir for the given condor script #
|
7 |
# and determine which files do not exist. It uses this list of #
|
8 |
# missing files to create a new sumission script. This script #
|
9 |
# is the same name as the original script except with an _resubmit #
|
10 |
# appended to the name #
|
11 |
# #
|
12 |
# usage: ./resubmitConfig.sh <condor_script_file> #
|
13 |
# #
|
14 |
# <condor_script_file> is the originially submitted condor script #
|
15 |
# #
|
16 |
# #
|
17 |
# ------------------------------------------------------------------------------- #
|
18 |
|
19 |
# input
|
20 |
# ------------------------------------------------------------------------------- #
|
21 |
|
22 |
condor_script_filename=$1
|
23 |
|
24 |
if [ ! -f "$condor_script_filename" ]; then
|
25 |
echo "File $condor_script_filename not found. Exiting"
|
26 |
exit 1
|
27 |
fi
|
28 |
|
29 |
# get the arguments lines from the original submission
|
30 |
# ------------------------------------------------------------------------------- #
|
31 |
|
32 |
# get the list of args into an array
|
33 |
index=0
|
34 |
while read line ; do
|
35 |
if [ -n "$(echo $line | grep argument)" ]; then
|
36 |
#arg_list[$index]=$(echo $line | sed s/\"\"/\\\\\"\\\\\"/g) # don't need this anymore?
|
37 |
arg_list[$index]=$(echo $line)
|
38 |
index=$(($index+1))
|
39 |
fi
|
40 |
done < "${condor_script_filename}"
|
41 |
num_args=${#arg_list[@]}
|
42 |
|
43 |
# get output path
|
44 |
output_path=$(echo ${arg_list[0]} | awk '{print $7}' | sed s/\"//g)
|
45 |
|
46 |
# output files to find -- if found, the index is stored
|
47 |
for (( i=0; i < $num_args; i++ ));
|
48 |
do
|
49 |
input_file=$(echo ${arg_list[$i]} | awk '{print $2}')
|
50 |
file=$(basename ${input_file})
|
51 |
#echo find $output_path -type f -name $file
|
52 |
if [ ! $(find $output_path -type f -name $file) ]; then
|
53 |
index_of_missing_files=(${index_of_missing_files[@]} $i)
|
54 |
fi
|
55 |
done
|
56 |
|
57 |
# form the resubmissing script
|
58 |
# ------------------------------------------------------------------------------- #
|
59 |
|
60 |
# if there are missing files, create the resubmit script
|
61 |
num_missing_files=${#index_of_missing_files[@]}
|
62 |
if [ ${num_missing_files} -gt 0 ]; then
|
63 |
|
64 |
# same name as originial condor script with _resubmit appended
|
65 |
condor_resubmit_script_filename=${condor_script_filename%.*}_resubmit.cmd
|
66 |
echo Missing ${num_missing_files} / ${num_args} files
|
67 |
echo creating resumit list: $condor_resubmit_script_filename
|
68 |
|
69 |
# do the same header as original file
|
70 |
head -n 15 $condor_script_filename > $condor_resubmit_script_filename
|
71 |
|
72 |
for (( i=0; i < ${num_missing_files}; i++ ));
|
73 |
do
|
74 |
cat >> $condor_resubmit_script_filename << EOF
|
75 |
|
76 |
executable=wrapper.sh
|
77 |
transfer_executable=True
|
78 |
${arg_list[${index_of_missing_files[$i]}]}
|
79 |
queue
|
80 |
|
81 |
EOF
|
82 |
done
|
83 |
else
|
84 |
echo "No missing files"
|
85 |
|
86 |
# create a blank resubmit script
|
87 |
condor_resubmit_script_filename=${condor_script_filename%.*}_resubmit.cmd
|
88 |
head -n 15 $condor_script_filename > $condor_resubmit_script_filename
|
89 |
fi
|