1 |
#! /bin/csh -f |
2 |
set echo |
3 |
|
4 |
echo "Usage: stage_tapes_in_order.csh <retention day number> '<dataseries>'" |
5 |
|
6 |
if ($?TMPDIR) then |
7 |
set WORKDIR = $TMPDIR/stagedata.$$ |
8 |
else |
9 |
set WORKDIR = /tmp/stagedata.$$ |
10 |
endif |
11 |
|
12 |
set HERE = $cwd |
13 |
|
14 |
mkdir $WORKDIR |
15 |
cd $WORKDIR |
16 |
|
17 |
# The following section is copied from |
18 |
# /home/thailand/bin/make_show_info_retrieve.csh |
19 |
# XXXXXXXXXXXXXXXXXXXXXXxxx |
20 |
#! /bin/tcsh -f |
21 |
|
22 |
if ( $#argv != 2 ) then |
23 |
echo "" |
24 |
echo "Usage: /home/thailand/bin/make_show_info_retrieve.csh <retention day number> '<dataseries>'" |
25 |
echo "Example 1: /home/thailand/bin/make_show_info_retrieve.csh 30 'dsds.mdi__lev1_8__fd_V_01h[105192-131136]'" |
26 |
echo "Example 2: /home/thailand/bin/make_show_info_retrieve.csh 60 'hmi.lev1[][12718378-12810537]'" |
27 |
echo "" |
28 |
cd $HERE; rm -rf $WORKDIR |
29 |
exit 1 |
30 |
endif |
31 |
|
32 |
set RETENTION = "$argv[1]" |
33 |
set DS = "$argv[2]" |
34 |
|
35 |
set RETENTION_CHK = `echo "$RETENTION" | egrep -c "[a-zA-Z]"` |
36 |
|
37 |
if ($RETENTION_CHK != 0) then |
38 |
echo "First field is retention time. Number only." |
39 |
cd $HERE; rm -rf $WORKDIR |
40 |
exit 1 |
41 |
endif |
42 |
|
43 |
set TMP = $WORKDIR/WORK |
44 |
mkdir $TMP |
45 |
|
46 |
set MAX_SUNUM = 64 |
47 |
set RETENTION = "DRMS_RETENTION=$RETENTION" |
48 |
set DATE_STAMP = `date +%Y.%m.%d_%H_%M_%S` |
49 |
set SERIES = `echo "$DS" | cut -f1 -d\[` |
50 |
|
51 |
echo "Running show_info query on $DS to retrieve sunum, online status, tape_num, and filenum" |
52 |
echo "show_info -PTSroq $RETENTION "'"'"$DS"'"'" > $TMP/$SERIES.out.$DATE_STAMP" |
53 |
show_info -PTSroq $RETENTION "$DS" > $TMP/$SERIES.out.$DATE_STAMP |
54 |
|
55 |
echo |
56 |
|
57 |
#grep'ing not for "Y" due to "N/A" in tape_id column for non-archived data |
58 |
set NOT_ONLINE_CNT = `grep -c -v Y $TMP/$SERIES.out.$DATE_STAMP` |
59 |
if ($NOT_ONLINE_CNT == 0) then |
60 |
echo "All files are on-line. Exiting" |
61 |
cd $HERE; rm -rf $WORKDIR |
62 |
exit 0 |
63 |
else |
64 |
echo "$NOT_ONLINE_CNT segments to be retrieved" |
65 |
echo |
66 |
endif |
67 |
|
68 |
echo "Grep'ing for data not-online and sorting by tape_num, file_num, and sunum" |
69 |
echo "grep -v Y $TMP/$SERIES.out.$DATE_STAMP | sort -nk4 -nk5 -nk2 > $TMP/$SERIES.out.$DATE_STAMP.sorted" |
70 |
grep -v Y $TMP/$SERIES.out.$DATE_STAMP | sort -nk4 -nk5 -nk2 > $TMP/$SERIES.out.$DATE_STAMP.sorted |
71 |
|
72 |
echo |
73 |
|
74 |
echo "Finding all unique tape numbers and generating uniqe list of sunums for each tape" |
75 |
foreach TAPE ( `awk '{print $4}' < $TMP/$SERIES.out.$DATE_STAMP.sorted | sort | uniq` ) |
76 |
echo "Tape $TAPE" |
77 |
echo "grep $TAPE $TMP/$SERIES.out.$DATE_STAMP.sorted | awk '{print "'$2'"}' | uniq > $TMP/$SERIES.$TAPE.$DATE_STAMP" |
78 |
grep $TAPE $TMP/$SERIES.out.$DATE_STAMP.sorted | awk '{print $2}' | uniq > $TMP/$SERIES.$TAPE.$DATE_STAMP |
79 |
echo |
80 |
end |
81 |
|
82 |
echo "Making show_info query script for sunum list of each tape" |
83 |
echo |
84 |
|
85 |
###Start of foreach subprocess loop to make show_info query script for each tape |
86 |
foreach FILE ($TMP/$SERIES.*L4.$DATE_STAMP) |
87 |
set FILE = `basename $FILE` |
88 |
echo "Making do.$FILE.csh script" |
89 |
|
90 |
|
91 |
@ i = 1 |
92 |
@ j = 1 |
93 |
|
94 |
set LENGTH = `wc -l $TMP/$FILE | awk '{print $1}'` |
95 |
|
96 |
echo "#! /bin/tcsh -f\n" > do.$FILE.csh |
97 |
|
98 |
while ( $i <= $LENGTH ) |
99 |
@ j = 1 |
100 |
echo -n "show_info -p $RETENTION '""$SERIES"'[? SUNUM in (' > $TMP/tmpfile.$DATE_STAMP |
101 |
|
102 |
while ( $j <= $MAX_SUNUM && $i <= $LENGTH) |
103 |
echo -n `sed -n "$i,$i p" $TMP/$FILE`"," >> $TMP/tmpfile.$DATE_STAMP |
104 |
@ i++ |
105 |
@ j++ |
106 |
end |
107 |
cat $TMP/tmpfile.$DATE_STAMP | sed 's/,$//' > $TMP/tmpfile2.$DATE_STAMP |
108 |
echo ") ?]'" >> $TMP/tmpfile2.$DATE_STAMP |
109 |
|
110 |
echo "date" >> do.$FILE.csh |
111 |
echo 'echo '$FILE >> do.$FILE.csh |
112 |
echo 'echo "'`cat $TMP/tmpfile2.$DATE_STAMP`'"' >> do.$FILE.csh |
113 |
cat $TMP/tmpfile2.$DATE_STAMP >> do.$FILE.csh |
114 |
echo "echo " >> do.$FILE.csh |
115 |
end |
116 |
echo "date" >> do.$FILE.csh |
117 |
chmod 777 do.$FILE.csh |
118 |
|
119 |
/bin/rm $TMP/tmpfile.$DATE_STAMP $TMP/tmpfile2.$DATE_STAMP |
120 |
|
121 |
echo "Finished making do.$FILE.csh script" |
122 |
echo |
123 |
|
124 |
###End of foreach loop |
125 |
end |
126 |
|
127 |
# XXXXXXXXXXXXXXXXXXXXXXxxx |
128 |
|
129 |
set ntapes = `/bin/ls | wc -l` |
130 |
if ($ntapes == 0) then |
131 |
cd $HERE; rm -rf $WORKDIR |
132 |
exit 0 |
133 |
endif |
134 |
|
135 |
foreach tapescript ( * ) |
136 |
echo starting $tapescript |
137 |
csh $tapescript |
138 |
if ($?) then |
139 |
cd $HERE |
140 |
echo FAILED scripts at $WORKDIR |
141 |
exit 1 |
142 |
endif |
143 |
end |
144 |
|
145 |
echo Done. |
146 |
|
147 |
cd $HERE; rm -rf $WORKDIR |
148 |
exit 0 |