shell脚本将特定时间间隔内的/ tmp目录中的日志文件复制

时间:2014-02-18 11:05:15

标签: bash shell

我想写一个shell脚本来将生成的日志文件复制到1小时到/ tmp目录。我希望在cron中安排此脚本,以便可以每小时运行此作业并将新生成的日志文件复制到/ tmp中。

谢谢,

2 个答案:

答案 0 :(得分:0)

您将文件作为参数,它会显示正在发生的日志... 您可以将脚本更改为从stdout重定向到文件...

#!/bin/bash

GAP=10     #How long to wait
LOGFILE=$1 #File to log to

if [ "$#" -ne "1" ]
then
    echo "USAGE: ./watch-log.sh <file with absolute path>"
    exit 1
fi


#Get current long of the file
len=`wc -l $LOGFILE | awk '{ print $1 }'`
echo "Current size is $len lines."

while :
do
    if [ -N $LOGFILE ] 
    then
        echo "`date`: New Entries in $LOGFILE: "
        newlen=`wc -l $LOGFILE | awk ' { print $1 }'`
        newlines=`expr $newlen - $len`
        tail -$newlines $LOGFILE
        len=$newlen
    fi
    sleep $GAP
done
exit 0

答案 1 :(得分:0)

使用find命令将能够实现上述功能,假设/ tmp不在搜索路径中 和日志文件的扩展名为.log

find $PATH_TO_SEARCH -type f -name "*.log" -cmin -60 -exec cp {} /tmp \;
# Above single command can be configured as cron job.