Linux下定时执行Tomcat日志切割任务

首先在touch /opt/logs/log-file.log文件

然后执行      head -c 10M < /dev/urandom > log-file.log    给日志文件添加10M左右的内容用于测试

在log-file.log同级目录(/opt/logs/)下新建一个脚本,内容如下(脚本所在可以自己定义,这个只是测试)

主要功能是超过10K大小(可以改)的文件重新生成一个带日期的。log文件,删除10天前的日志文件,然后执行

crontab -e添加定时任务      * * * * * /opt/logs/test.sh (你的shell所在目录,我的是 /opt/logs/test.sh)   这个任务是一分钟执行一次,不懂的可以搜一下Linux下的定时任务

#! /bin/sh

#bash -x

file_path=/opt/logs
file_name=log-file

file_p_name=/opt/logs/log-file.log
maxsize=$((1024*10))

#定义10天前的日期
time1=`date -d '10 days ago' +%Y_%m_%d`
checkfilesize()
{
#获取今天的时间,精确到秒
        time=$(date "+%Y%m%d-%H%M%S")
#判断是否是一个文件
        if [ ! -f "$file_p_name" ];then
                touch ${file_p_name}
        fi
#获取当前日志文件的大小,注意这里最外面的符号是``,是反的引号,tab键上面的那个
        file_size=` ls -l $file_p_name | awk '{ print $5 }'`

        if (( $file_size > $maxsize ));then
                new_file_name=$file_path/${file_name}_$time.log
                mv ${file_p_name} ${new_file_name}
                #echo "" > $file_p_name
                touch ${file_p_name}
                tail -n 100 ${new_file_name} >${file_p_name}
#删除10天前的日志文件
                rm -f ${file_path}/$file_name_$time1-*.log
        fi


}
checkfilesize

 

你可能感兴趣的:(Linux下定时执行Tomcat日志切割任务)