[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[LDM #UKU-190526]: LDM - PIPE usage in pqact.conf and bash scripts
- Subject: [LDM #UKU-190526]: LDM - PIPE usage in pqact.conf and bash scripts
- Date: Mon, 16 Apr 2007 15:43:40 -0600
Hi Mike,
re:
> This is a seemingly simple operation but it's rapidly becoming more
> complex than anticipated! I've tried many variations and searched the
> archives but no luck so far. Maybe you guys can push me in the correct
> direction.
We'll try :-)
> I'm attempting to use LDM to download netCDF from MADIS, unzip it, then
> write it to a text file for later inclusion into a database.
OK.
> Everything works well but for the "gunzip/ncdump" portion. This last
> iteration I tried a named pipe attempt (you can't see it but there's a
> "mkfifo pipencdump" command.) There are lots of other attempts and all
> logs are saved.
Just so we are on the same page, please remember that ncdump gets its input from
a disk file, not STDIN. Here are the first few lines of the man page for
ncdump:
NCDUMP(1) UNIDATA UTILITIES NCDUMP(1)
NAME
ncdump - Convert netCDF files to ASCII form (CDL)
SYNOPSIS
ncdump [-c] [-h] [-v var1,...] [-b lang] [-f lang] [-l len] [-n name]
[-p f_digits[,d_digits]] file
DESCRIPTION
ncdump generates an ASCII representation of a specified netCDF file on
standard output. The ASCII representation is in a form called CDL
(��network Common Data form Language��) that can be viewed, edited, or
serve as input to ncgen. ncgen is a companion program that can gener-
ate a binary netCDF file from a CDL file. Hence ncgen and ncdump can
be used as inverses to transform the data representation between binary
and ASCII representations. See ncgen for a description of CDL and
netCDF representations.
...
> This particular attempt, the most recent, worked well, apparently, but
> resulted in empty files!
>
> In addition, I wondered if I needed to use "fopen()" and "fclose()"
> with this approach?
No, I don't think so.
> Any other help you could give me would be great.
Try the following revision to your ldmfile3.sh script:
#!/bin/bash
#---------------------------------------------------------------------
#
# Name: ldmfile.bash
#
# Purpose: file an LDM product and log the receipt of the product
# Note: modify the "log" file for a specific use!
#
# History: 20070412 - Created from example Bourne shell script
# provided by Unidata
# 20070416 - Modified by Tom at Unidata
#
#------------------------------------------------------------------------
# set log file
LOG=/usr/local/ldm/MADIS_data/logs/MADIS_log
exec >>$LOG 2>&1
# Create directory structure
FNAME=$(basename $1)
DIRS=$(echo $1 | sed s/$FNAME//)
mkdir -p $DIRS
# Write stdin to the designated file and create an ASCII version with ncdump
gunzip -cf > $DIRS/pipencdump
ncdump $DIRS/pipencdump > $1
# Log results
if false; then
echo $(date -u +'%b %d %T') $(basename $0)\[$$\]: Error writing ncdump
output, exit status = $?"
else
echo $(date -u +'%b %d %T') $(basename $0)\[$$\]: FILE $1
rm -f $DIRS/pipencdump
fi
# done
Note that I:
- moved logging into the 'if' statement
- changed error logging to the same file that is specified for success logging
(using logger forces the log message to be written to ~ldm/logs/ldmd.log)
- added deletion of the uncompressed netCDF file if ncdump was successful. You
may or may not want to do this.
> Then I promise to go away and stop bugging you!
:-) No worries; you are not bugging us.
Cheers,
Tom
****************************************************************************
Unidata User Support UCAR Unidata Program
(303) 497-8642 P.O. Box 3000
address@hidden Boulder, CO 80307
----------------------------------------------------------------------------
Unidata HomePage http://www.unidata.ucar.edu
****************************************************************************
Ticket Details
===================
Ticket ID: UKU-190526
Department: Support LDM
Priority: Normal
Status: Closed