ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/JSOC/proj/workflow/scripts/stage_tapes_in_order.csh
Revision: 1.1
Committed: Thu Apr 21 23:25:48 2011 UTC (12 years, 5 months ago) by phil
Content type: application/x-csh
Branch: MAIN
CVS Tags: Ver_6-0, Ver_6-1, Ver_6-2, Ver_6-3, Ver_6-4, Ver_9-1, Ver_5-14, Ver_5-13, Ver_LATEST, Ver_9-3, Ver_9-41, Ver_9-2, Ver_8-8, Ver_8-2, Ver_8-3, Ver_8-0, Ver_8-1, Ver_8-6, Ver_8-7, Ver_8-4, Ver_8-5, Ver_7-1, Ver_7-0, Ver_9-5, Ver_9-4, Ver_8-10, Ver_8-11, Ver_8-12, Ver_9-0, HEAD
Log Message:
initial insert

File Contents

# Content
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