Bootstrap

linux 定时切割日志,Linux脚本定时切割日志文件

测试环境的日志没有定时切割,时间久了,文件比较大,不方便搜索查找。所以尝试写了下脚本。

1.脚本如下:

#!/bin/sh

log_dir='/app/logs/split'

monitor_file=$1

echo `date '+%Y-%m-%d %H:%M:%S'`'初始化切割日志文件为:'$monitor_file >> /app/logs/split/split.log

if [ ! $1 ]

then

echo `date '+%Y-%m-%d %H:%M:%S'`'输入参数为空,使用默认路径:/app/wktrait/apache-tomcat-8.5.29/logs/catalina.out' >> /app/logs/split/split.log

monitor_file=/app/XXX/apache-tomcat-8.5.29/logs/catalina.out #tomcat目录下的catalina.out文件的绝对路径

fi

log_name=`basename $monitor_file`

echo `date '+%Y-%m-%d %H:%M:%S'`'切割文件名称为:'$log_name >> /app/logs/split/split.log

file_size=`du $monitor_file | awk '{print $1}'`

echo `date '+%Y-%m-%d %H:%M:%S'`'切割文件大小为:'$file_size >> /app/logs/split/split.log

if [ $file_size -ge 1024000 ]

then

echo `date '+%Y-%m-%d %H:%M:%S'`'文件大小大于 1024000 开始切割' >> /app/logs/split/split.log

if [ ! -d $log_dir ]

then

echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割路径不存在,新建....' >> /app/logs/split/split.log

mkdir /app/logs/split #创建保存切割文件目录,这个路径可以自行修改,保存到你想要的目录

fi

echo `date '+%Y-%m-%d %H:%M:%S'`'开始切割日志....' >> /app/logs/split/split.log

echo `date '+%Y-%m-%d %H:%M:%S'`'开始切割日志....'

cp $monitor_file /app/logs/split/$log_name-`date +%Y%m%d%H%M%S`.log #保存日志文件

echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割完成。' >> /app/logs/split/split.log

echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割完成。'

echo `date '+%Y-%m-%d-%H:%M:%S'`'文件切割' >> /app/logs/split/split.log #记录切割日志

echo `date '+%Y-%m-%d %H:%M:%S'`'开始清空源文件...' >> /app/logs/split/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'`'清空源文件完成。' >> /app/logs/split/split.log

echo `date '+%Y-%m-%d %H:%M:%S'`'清空源文件完成。'

fi

脚本基本能实现切割功能,下一步就是定时了。网上搜索的是用的。

2. 用 crontab -e 编辑定时器代码

输入  crontab -e  命令在打开的窗口填写如下定时任务

*/1 * * * *  sh /app/script/splitLog.sh  /app/XXX/apache-tomcat-8.5.29/logs/catalina.out

然后保存退出。

参考链接:  https://www.jb51.net/article/97116.htm

同时放上一个定时的介绍: https://www..com/mingforyou/p/3930636.html

;