首先在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