一、按固定大小切割
定时任务,每分钟执行一次
*/1 * * * * /bin/bash /home/shell/cut_tomcat_logs.sh
脚本:
#!/bin/sh
log_dir='/app/tomcat-job/logs'
monitor_file=$1
echo `date '+%Y-%m-%d %H:%M:%S'`'初始化切割日志文件为:'$monitor_file >> $log_dir/log/split.log
if [ ! $1 ]
then
echo `date '+%Y-%m-%d %H:%M:%S'`'输入参数为空,使用默认路径:/app/tomcat-job/logs/catalina.out' >> $log_dir/log/sp
lit.log
monitor_file=$log_dir/catalina.out #tomcat目录下的catalina.out文件的绝对路径
fi
log_name=`basename $monitor_file`
echo `date '+%Y-%m-%d %H:%M:%S'`'切割文件名称为:'$log_name >> $log_dir/log/split.log
file_size=`du $monitor_file | awk '{print $1}'`
echo `date '+%Y-%m-%d %H:%M:%S'`'切割文件大小为:'$file_size >> $log_dir/log/split.log
if [ $file_size -ge 51200 ]
then
echo `date '+%Y-%m-%d %H:%M:%S'`'文件大小大于 51200 开始切割' >> $log_dir/log/split.log
if [ ! -d $log_dir ]
then
echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割路径不存在,新建....' >> $log_dir/log/split.log
mkdir $log_dir/log #创建保存切割文件目录,这个路径可以自行修改,保存到你想要的目录
fi
echo `date '+%Y-%m-%d %H:%M:%S'`'开始切割日志....' >> $log_dir/log/split.log
echo `date '+%Y-%m-%d %H:%M:%S'`'开始切割日志....'
cp $monitor_file $log_dir/log/$log_name-`date +%Y%m%d%H%M%S`.log #保存日志文件
echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割完成。' >> $log_dir/log/split.log
echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割完成。'
echo `date '+%Y-%m-%d-%H:%M:%S'`'文件切割' >> $log_dir/log/split.log #记录切割日志
echo `date '+%Y-%m-%d %H:%M:%S'`'开始清空源文件...' >> $log_dir/log/split.log
echo `date '+%Y-%m-%d %H:%M:%S'`'开始清空源文件...'
echo "" > $monitor_file #清空tomcat的log/catalina.out文件内容
echo `date '+%Y-%m-%d %H:%M:%S'`'清空源文件完成。' >> $log_dir/log/split.log
echo `date '+%Y-%m-%d %H:%M:%S'`'清空源文件完成。'
fi
二、每日切割
定时任务:
55 23 * * * /bin/sh /home/shell/cut_tomcat_log.sh
脚本:
#!/bin/bash
DIR=/app/tomcat/logs
d=`date +%Y-%m-%d`
cd $DIR
cp catalina.out catalina.${d}.out
echo "" > catalina.out
zip catalina.${d}.out.zip catalina.${d}.out
rm -rf catalina.${d}.out