Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> kwatch.sh Review (WIP)
Long while back I made some modifications to Connor McDonald's alert log
script available on his site. I thought it was neat the way it used the dd
command to copy the new chunk of the log and then only check that chunk for
errors. The script below is something similar to this except it checks the
modified time and size first to see if file has any new changes. If so it
grabs the chunk of the file it will need to scan (either the new portion or
the whole file). This method does not require a complete copy of the file
each time which is what Connor's does. I haven't added anything other than
the part that gets the new information from the file. Free free to make any
recommends. I am ksh hack at times and miss more obvious ways of doing
things. It is self documenting of course :)
#!/usr/bin/ksh
# =================================================================
# NAME
# kwatch.sh
#
# SYNOPSIS
#
# DESCRIPTION
#
# USER COMMANDS
#
# NOTES
#
# =================================================================
TEMP=/tmp
WORK_FILE=$TEMP/kwatch.tmp
TEMP_FILE=$TEMP/$$.tmp
FILE=$1
touch $WORK_FILE
# Make sure $FILE exists.
if [[ -f "$FILE" ]]; then
OLD_LS=$( egrep "$FILE" $WORK_FILE ) CUR_LS=$( ls -l $FILE ) CUR_MOD_TIME=$( echo $CUR_LS | awk '{printf("%s %s %s \n",$6,$7,$8)}' ) OLD_MOD_TIME=$( echo $OLD_LS | awk '{printf("%s %s %s \n",$6,$7,$8)}' ) CUR_SIZE=$( echo $CUR_LS | awk '{ print $5 }' ) OLD_SIZE=$( echo $OLD_LS | awk '{ print $5 }' ) if [[ ! -z "$OLD_LS" ]]; then if [[ "$OLD_MOD_TIME" != "$CUR_MOD_TIME" || "$CUR_SIZE" !="$OLD_SIZE" ]]; then
if (( $CUR_SIZE > $OLD_SIZE )); then dd if=$FILE of=$TEMP_FILE bs=$OLD_SIZE skip=1 CHECK_FILE=$TEMP_FILE else CHECK_FILE=$FILE fi LINE_NO=$( fgrep -n "$FILE" $WORK_FILE | awk -F: '{ print $1 }' ) cat $WORK_FILE | sed ${LINE_NO}d > $TEMP_FILE ls -l $FILE >> $TEMP_FILE mv $TEMP_FILE $WORK_FILE fi else ls -l $FILE >> $WORK_FILE CHECK_FILE=$FILE
else
# $FILE does not exist.
echo $FILE does not exist.
fi
rm $TEMP_FILE 2> /dev/null Received on Sat Aug 24 2002 - 01:26:16 CDT
![]() |
![]() |