#!/bin/bash # # Script to copy the image data - Visible version # . $HOME/.compositerc-vis config_file=$1 LOGFILE=$ACQUIRE_ADMIN/${config_file%.info}.vis.log exec >>$LOGFILE exec 2>>$LOGFILE script_name=$(basename $0) echo $$ >$ACQUIRE_ROOT/.pid.$script_name.$config_file while true; do echo "___________________________________" date -u cd $SATINFO if [[ ! -f $config_file ]]; then echo $config_file Not in $SATINFO . exiting $(date -u ) $ACQUIRE_ADMIN/daemon_restart.log rm -rf $ACQUIRE_ROOT/.pid.$script_name.$config_file exit fi # check LAST n images ( this is overrided in the config file) # if [ ! -n $LAST ]; then LAST=3 # fi . $config_file TMPSATDIR=$DATADIR/${config_file%.info} export TMPSATDIR mkdir $TMPSATDIR 2>/dev/null MCPATH=$TMPSATDIR:$MCIDAS_DATA export MCPATH script_name config_file GETTIME=`date -u +%y%j%H%M`00 export GETTIME # run for primary and backup if they exist for server_type in primary backup; do case $server_type in primary) GROUP=${primary_dataset%/*} DESCRIPTOR=${primary_dataset#*/} SERVER=${primary_host} ;; backup) GROUP=${backup_dataset%/*} DESCRIPTOR=${backup_dataset#*/} SERVER=${backup_host} ;; esac export GROUP DESCRIPTOR SERVER LAST echo Checking $GROUP $DESCRIPTOR $SERVER mcenv << 'EOF' echo $$ >$ACQUIRE_ROOT/.pid.${script_name}.$config_file.mcenv dsserve.k ADD A/A AREA 1 9999 DEV=NNN logon.k $USER $PROJ DEV=NNN # make sure dataset is set up ############################### dataloc.k ADD $GROUP $SERVER DEV=NNN # gather list of geo gacs from LAST images ################################################## if [[ -n $GROUP ]]; then case $GROUP in GOESSA*) # EAST*|WEST*|GOESSA*) #imglist.k $GROUP/${DESCRIPTOR}.-${LAST} BAND=$band # echo "imglist.k $GROUP/${DESCRIPTOR}.-${LAST} BAND=$band" >> imglists/imglist${GROUP}.${GETTIME}.out # imglist.k $GROUP/${DESCRIPTOR}.-${LAST} BAND=$band >> imglists/imglist${GROUP}.${GETTIME}.out imglist.k $GROUP/${DESCRIPTOR}.-${LAST} BAND=$band|awk -F" " '{print $6, $7 }'|grep ":"|grep -v for >$TMPSATDIR/LAST_LIST ;; *) #imglist.k $GROUP/${DESCRIPTOR}.-${LAST} BAND=$band # echo "imglist.k $GROUP/${DESCRIPTOR}.-${LAST} BAND=$band" >> imglists/imglist${GROUP}.${GETTIME}.out # imglist.k $GROUP/${DESCRIPTOR}.-${LAST} BAND=$band >> imglists/imglist${GROUP}.${GETTIME}.out imglist.k $GROUP/${DESCRIPTOR}.-${LAST} BAND=$band|awk -F" " '{print $5, $6 }'|grep ":"|grep -v for >$TMPSATDIR/LAST_LIST ;; esac else >$TMPSATDIR/LAST_LIST fi cat $TMPSATDIR/LAST_LIST 2>/dev/null|while read line; do grep "$line" $TMPSATDIR/GEO.done >/dev/null 2>&1 ret=$? if [[ $ret -ne 0 ]]; then echo $line >>$TMPSATDIR/GEO.todo fi done # Copy image locally from ADDE Server ###################################### touch $TMPSATDIR/GEO.todo mv $TMPSATDIR/GEO.todo $TMPSATDIR/GEO.processing #start copy loop sort -r $TMPSATDIR/GEO.processing 2>/dev/null|while read day time lat lon; do image_day=$day # if [ ! -z ${LATBOUND} ] && [ $lat -ge $LATBOUND ]; then # continue # fi echo Processing ${GROUP}/${DESCRIPTOR} DAY=$day TIME=${time} BAND=$band chop=$chop if [[ $chop = "yes" ]]; then lines_per_sec=$LINES_PER_SEC list_out=$(imglist.k ${GROUP}/${DESCRIPTOR} DAY=$day TIME=${time} BAND=$band FORM=OPS |grep -v yyddd|grep -v for|grep -v \-|grep -v done) src_pos=$(echo $list_out|awk -F" " '{print $1 }') lcor=$(echo $list_out|awk -F" " '{print $5 }') ecor=$(echo $list_out|awk -F" " '{print $6 }') lres=$(echo $list_out|awk -F" " '{print $7 }') eres=$(echo $list_out|awk -F" " '{print $8 }') lsiz=$(echo $list_out|awk -F" " '{print $10 }') esiz=$(echo $list_out|awk -F" " '{print $11 }') # How many minutes long should a chunk of data cover number_minutes=4 number_seconds=$((number_minutes*60)) # LINES_PER_SECOND is defined in satinfo file. # How many lines should a chunk of data cover line_size=$((LINES_PER_SEC*number_seconds)) echo 'number minutes in chunk of data=' $number_minutes echo 'number of lines in chunk of data=' $line_size START_TIME=${time} START_DAY=$DAY image_time=$time image_day=$day new_image_time=$image_time new_image_day=$image_day first_line=$lcor first_ele=$ecor first_line=0 first_ele=0 last_line=$lsiz yyyymmdd=$(datelist.k $day|awk -F"=" '{print $3 }') add_minutes=0 while [[ $first_line -lt $last_line ]]; do echo 'number minutes in chunk of data=' $number_minutes echo 'number of lines in chunk of data=' $line_size if [[ $next_line -gt $last_line ]]; then number_lines=$((last_line-first_line)) fi # mceval.k IMGLIST ${GROUP}/${DESCRIPTOR} DAY=$image_day TIME=${image_time} FORM=EXP # mceval.k IMGLIST ${GROUP}/${DESCRIPTOR} DAY=$image_day TIME=${image_time} FORM=OPS #mceval.k IMGCOPY ${GROUP}/${DESCRIPTOR} A/A.5000 DAY=$image_day TIME=${image_time} $KEYWORDS LINE=$first_line $first_ele F SIZE=$line_size $esiz DEV=CCC #mceval.k IMGCOPY ${GROUP}/${DESCRIPTOR} A/A.5000 DAY=$image_day TIME=${image_time} $KEYWORDS LINE=$first_line $first_ele F SIZE=$line_size $esiz DEV=CCC #mceval.k IMGCOPY ${GROUP}/${DESCRIPTOR} A/A.5000 DAY=$image_day TIME=${image_time} $KEYWORDS LINE=$first_line $first_ele F SIZE=$line_size $esiz DEV=CCC STYPE=VISR mceval.k IMGCOPY ${GROUP}/${DESCRIPTOR} A/A.5000 DAY=$image_day TIME=${image_time} $KEYWORDS LINE=$first_line $first_ele F SIZE=$line_size $esiz DEV=CCC copy_ret=$? if [[ $copy_ret -eq 0 ]]; then mceval.k IMGCHA A/A.5000 DAY=$new_image_day TIME=${new_image_time} unset sat_info sat_info=$(imglist.k A/A.5000 FORM=OPS |grep 5000 |awk -F" " '{print $2, $3, $4 }') echo mv $TMPSATDIR/AREA5000 $PROCESS_DIR/${GROUP}-${DESCRIPTOR}.${new_image_day}.${new_image_time} mv $TMPSATDIR/AREA5000 $PROCESS_DIR/${GROUP}-${DESCRIPTOR}.${new_image_day}.${new_image_time} echo ${sat_info} $band 5000 > $PROCESS_DIR/${GROUP}-${DESCRIPTOR}.${new_image_day}.${new_image_time}.todo else echo copy failed fi first_line=$((first_line+line_size)) add_minutes=$((add_minutes+number_minutes)) new_image_day=$(date +%Y%j --date="$yyyymmdd $image_time $add_minutes minutes") new_image_time=$(date +%H:%M:%S --date="$yyyymmdd $image_time $add_minutes minutes") # sleep 7 done else ##################################################### # Run IMGCOPY no chopping up needed ##################################################### echo imgcopy.k ${GROUP}/${DESCRIPTOR} A/A.5000 DAY=$day TIME=${time} $KEYWORDS DEV=NNN imgcopy.k ${GROUP}/${DESCRIPTOR} A/A.5000 DAY=$day TIME=${time} $KEYWORDS #imgcopy.k ${GROUP}/${DESCRIPTOR} A/A.5000 DAY=$day TIME=${time} $KEYWORDS STYPE=VISR copy_ret=$? if [[ $copy_ret -eq 0 ]]; then unset sat_info sat_info=$(imglist.k A/A.5000 FORM=OPS |grep 5000 |awk -F" " '{print $2, $3, $4 }') mv $TMPSATDIR/AREA5000 $PROCESS_DIR/${GROUP}-${DESCRIPTOR}.${day}.${time} echo ${sat_info} $band 5000 > $PROCESS_DIR/${GROUP}-${DESCRIPTOR}.${day}.${time}.todo fi fi # sleep 10 echo $image_day $time >> $TMPSATDIR/GEO.done done #put anything not done back in the todo list cat $TMPSATDIR/GEO.processing 2>/dev/null|while read line; do grep "$line" $TMPSATDIR/GEO.done >/dev/null 2>&1 ret=$? if [[ $ret -ne 0 ]]; then echo $line >>$TMPSATDIR/GEO.todo fi done rm -rf $TMPSATDIR/GEO.processing # sort and truncate done files #sort -n -k 2 -k 3 $TMPSATDIR/GEO.done|tail -50 >$TMPSATDIR/GEO.done.$$ # (new style keys) sort -n $TMPSATDIR/GEO.done|tail -50 >$TMPSATDIR/GEO.done.$$ # (new style keys) mv $TMPSATDIR/GEO.done.$$ $TMPSATDIR/GEO.done rm -rf $ACQUIRE_ROOT/.pid.${script_name}.$config_file.mcenv EOF done sleep $CHECK_SECONDS tail -3000 $LOGFILE >/tmp/.$$.tmp cat /tmp/.$$.tmp >$LOGFILE rm -rf /tmp/.$$.tmp done