(file) Return to runtdsynop CVS log (file) (dir) Up to [Development] / JSOC / proj / timed / scripts

File: [Development] / JSOC / proj / timed / scripts / runtdsynop (download)
Revision: 1.4, Tue Jan 13 21:31:58 2015 UTC (8 years, 4 months ago) by rick
Branch: MAIN
CVS Tags: Ver_9-4, Ver_9-3, Ver_9-2, Ver_9-1, Ver_9-0, Ver_8-8, Ver_8-7, Ver_8-12, Ver_8-11, Ver_8-10
Changes since 1.3: +82 -13 lines
modified for JSOC release 8.7

#!/bin/csh -f
# script to run multiple instances of trackings plus analyses in the
#   time-distance synoptic series for a set of given time centers
# The invoked scripts should be run every 8 hours to maintain cadence with
#   observations

set TW
set TFLG
@ TEST = 0	# set to 1 for production in namespace hmi_test
if ("$1" =~ '-test') then
  @ TEST = 1
  set TW = test
  set TFLG = -test
  shift
endif

if ($#argv < 1) then
  echo "usage: $0 [-test] YYMMDD [YYMMDD [spacing]]"
  echo "       default spacing = 480 min"
  exit
endif
@ YYMMDD0 = `echo $1 | sed  -e "s/^0*//"`
@ YYMMDD1 = $YYMMDD0

@ SLEEP = 480

if ($#argv > 1) then
  @ YYMMDD1 = `echo $2 | sed  -e "s/^0*//"`
  if ($#argv > 2) @ SLEEP = `echo $3 | sed  -e "s/^0*//"`
endif
@ SLEEP *= 60

set PROG = `basename $0`
set NOTIFY = `whoami`

set SCRIPT = tdsynop

if ($TEST) then
  set NMSP = hmi_test
  set ARG = -test
else
  set NMSP = hmi
  set ARG
endif
set PLID = $NMSP\tdVsyn

foreach CMD ($SCRIPT)
  which $CMD > /dev/null
  if ($status) then
    if (!(-x $CMD)) then
      echo Error: command $CMD not in path\; script will fail
      exit
    endif
  endif
end

set QUEUE = j.q

# auxiliary files
set HOSTID = `hostname | awk -F. '{print $1}'`
set PROCID = $HOSTID\_$$
set TMPFSLOC = ~rick/hmi/tmpfs
set TMPARSE = ~rick/bin/tmplocs
set ALTDIR = ~rick/hmi
if (-x $TMPARSE) then
  set XXLOCS = (`$TMPARSE $TMPFSLOC $ALTDIR`)
  set TEMP = $XXLOCS[1]
  set SCRT = $XXLOCS[2]
else
  set TEMP = /tmp
  set SCRT = /tmp
endif
set MSGS = $TEMP/msgs
if (!(-d $MSGS)) mkdir $MSGS
set RLOG = $SCRT/$PLID.log
set MMSG = $MSGS/msg.$PROCID
set QRES = $TEMP/qres
if (!(-d $QRES)) mkdir $QRES


# check gatekeeper for permission to proceed
set TURN = ~rick/hmi/pikewatch
set PIKE = ~rick/hmi/pike
if ($TEST) then
  set RES = (`$TURN $PIKE -test`)
else
  set RES = (`$TURN $PIKE`)
endif
@ NOGO = $RES[1]
if ($NOGO) then
  set NOW = `date +%Y.%m.%d_%T`
  echo "HMI ring-diagrams $TW pipeline aborted" > $MSGS/subj.$PROCID
  echo "-> $NOW Script $PROG aborted! <-" >> $MMSG
  if ($NOGO < 0) then
    echo "   watcher script $TURN called with invalid argument" >> $MMSG
    echo "   or file $PIKE has invalid format" >> $MMSG
  else
    @ HRCT = $NOGO / 3600
    @ NOGO -= $HRCT * 3600
    @ MNCT = $NOGO / 60
    @ NOGO -= $MNCT * 60
    echo -n "   file $PIKE contains NoGo signal for $HRCT" >> $MMSG
    echo `printf :%02d:%02d $MNCT $NOGO` >> $MMSG
    if ($#RES > 1) then
      echo "   Reason: $RES[2-]" >> $MMSG
    endif
  endif

  echo `whoami` > $MSGS/list.$PROCID
  echo $SUBJ > $MSGS/subj.$PROCID
  exit
endif

@ YYMMDD = $YYMMDD0
set MOLEN = (31 28 31 30 31 30 31 31 30 31 30 31)
@ YR = $YYMMDD / 10000
if ($YR % 4 == 0) set MOLEN = (31 29 31 30 31 30 31 31 30 31 30 31)

while ($YYMMDD <= $YYMMDD1)
  foreach HR (04 12 20)
# check gatekeeper for permission to proceed
    if ($TEST) then
      set RES = (`$TURN $PIKE -test`)
    else
      set RES = (`$TURN $PIKE`)
    endif
    @ NOGO = $RES[1]
    if ($NOGO) goto TURNOUT

    set NOW = `date +%Y.%m.%d_%T`
    set QINFO = `qsub -q $QUEUE -e $QRES -o $QRES $SCRIPT $ARG $YYMMDD $HR`
    if ($#QINFO) then
      set QPID = `echo $QINFO | awk '{print $3}'`
      echo $NOW $SCRIPT $ARG $YYMMDD $HR submitted to $QUEUE as job $QPID >> $RLOG
      if ($YYMMDD < $YYMMDD1) then
	sleep $SLEEP
      else if ($HR < 20) then
	sleep $SLEEP
      endif
    else
      echo $NOW Failed to submit $SCRIPT $ARG $YYMMDD $HR >> $RLOG
    endif
  end
  @ YR = $YYMMDD / 10000
  @ MO = ($YYMMDD % 10000) / 100
  @ DA = $YYMMDD % 100
  @ DA++
  if ($DA > $MOLEN[$MO]) then
    @ MO++
    @ DA = 1
    if ($MO > 12) then
      @ MO = 1
      @ YR++
      set MOLEN = (31 28 31 30 31 30 31 31 30 31 30 31)
      if ($YR % 4 == 0) set MOLEN = (31 29 31 30 31 30 31 31 30 31 30 31)
    endif
  endif
  @ YYMMDDL = $YYMMDD
  @ YYMMDD = $YR`printf %02d $MO``printf %02d $DA`
end

if ($?YYMMDDL) then
  echo -n "Final script $SCRIPT $YYMMDDL $HR submitted " >> $MMSG
  date '+%e %b %H:%M' >> $MMSG
endif
echo "HMI time-distance $TW pipeline run" > $MSGS/subj.$PROCID
echo "$NOTIFY" > $MSGS/list.$PROCID
exit

TURNOUT:

echo "-> Script $PROG aborted! <-" >> $MMSG
echo -n "Final script $SCRIPT submitted " >> $MMSG
date '+%e %b %H:%M' >> $MMSG
tail -1 $RLOG >> $MMSG
if ($NOGO < 0) then
  echo "   watcher script $TURN called with invalid argument" >> $MMSG
  echo "   or file $PIKE has invalid format" >> $MMSG
else
  @ HRCT = $NOGO / 3600
  @ NOGO -= $HRCT * 3600
  @ MNCT = $NOGO / 60
  @ NOGO -= $MNCT * 60
  echo -n "   file $PIKE contains NoGo signal for $HRCT" >> $MMSG
  echo `printf :%02d:%02d $MNCT $NOGO` >> $MMSG
  if ($#RES > 1) then
    echo "   Reason: $RES[2-]" >> $MMSG
  endif
endif


Karen Tian
Powered by
ViewCVS 0.9.4