On Jan 10, 8:23 pm, Unruh <unruh-s...@physics.ubc.ca> wrote:
> What version of ntp are you running? I have 4.2.4p4 and it creates a new
> set of statistics files every day, saving the old ones in the form
> /var/log/ntp/peerstats.20090101  /var/log/ntp/peerstats.20090106

As far as I can tell ntp creates peerstats and peerstats.20090111 at
the same time. Both filenames are just hard links to the same file on
the disk. If you remove peerstats.20090111 ntp will continue to write
it's stats to peerstats. At the beginning of a new day ntp recognizes
that peerstats.20090111 is not present and then renames peerstats to a
backup file called peerstats.1281C0. So far so good, but the problem
seems to be that ntp doesn't this exactly at 00:00 but at first file
access after 00:00. The cryptostats file only gets one or two entries
every day, so the first access to it could be much later than 00:40
when my script moves the stats files of the last day to a fileserver.

PS: I have to to this because my ntp servers run on 1 GB SD cards and
there is not much space for stats files ;-)

And here is my script:

#!/bin/sh
# this script syncs ntp stats to a nfs directory
# Author: Thorsten Muehlfelder <thenk...@gmx.de>
# Version: 0.7
#
################################################################################

# where are the ntpd stats?
STATS_DIR="/mnt/stats"
# which ntpd stats should be copied?
STATS="cryptostats loopstats peerstats rawstats sysstats"
# where is my config file?
CONFIG="/etc/nfs-sync.conf"

################################################################################

# If possible, log events in /var/log/messages:
if [ -f /var/run/syslogd.pid -a -x /usr/bin/logger ]; then
        LOGGER=/usr/bin/logger
else # output to stdout/stderr:
        LOGGER=/bin/cat
fi

# get the configuration information from /etc/nfs-sync.conf
if [ -r $CONFIG ]; then
        . $CONFIG
else
        echo "nfs-sync.sh: config file does not exist or is not readable" |
$LOGGER
        exit 1
fi

# cd into ntpd stats dir
if [ -d $STATS_DIR ]; then
        cd $STATS_DIR
else
        echo "nfs-sync.sh: stats dir does not exist" | $LOGGER
        exit 1
fi

# mount the nfs directory and check the exit status
mount -t nfs ${NFSSERVER}:${EXPORT} $IMPORT > /dev/null 2>&1
if [ $? = 0 ]; then
        for FILENAME in *.????????; do
                # set the part after . as FILEDATE
                FILEDATE=`echo "$filename" | gawk 'BEGIN {FS = "."} {print $2}'`
                # set DATE to the current date
                DATE=`date +%Y%m%d`
                # skip the statistic files for the current day
                if [ "$FILEDATE" = "$DATE" ]; then
                        continue
                fi
                # move statistic files to the nfs directory
                mv $FILENAME $IMPORT > /dev/null 2>&1
        done
        # move gzipped statistic files to the nfs directory
        mv *.????????.gz $IMPORT > /dev/null 2>&1
        # copy the actual day statistic files to the nfs directory
        for STAT in ${STATS}; do
                cp -f $STAT $IMPORT > /dev/null 2>&1
        done

        # make sure to write everything to disk
        sync
        # umount the nfs directory
        umount $IMPORT
else
        echo "nfs-sync.sh: mount.nfs system call failed" | $LOGGER
        for FILENAME in *.????????; do
                # set the part after . as FILEDATE
                FILEDATE=`echo $filename | gawk 'BEGIN {FS = "."} {print $2}'`
                # set DATE to the current date
                DATE=`date +%Y%m%d`
                # skip the statistic files for the current day
                if [ "$FILEDATE" = "$DATE" ]; then
                        continue
                fi
                # gzip the statistic files
                gzip $FILENAME > /dev/null 2>&1
        done
fi

_______________________________________________
questions mailing list
questions@lists.ntp.org
https://lists.ntp.org/mailman/listinfo/questions

Reply via email to