日志切割
一 logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。可以节省磁盘空间。
logrotate详细用法
二 nginx默认的日志没有按天切割,都是存放在一块的,不方便查阅,所以想写个shell脚本来是先nginx日志的按天分割。
脚本思路【按天分割日志】
a、获取昨天的日期(date -d yesterday +%Y%m%d),用来作为分割后日志的名称
b、将源日志文件移动到新的newlogs文件夹里,并按时间重命名
c、在源日志文件夹(logs)里新建默认日志文件(access.log)
d、给nginx一个信号量,重新打开日志
f、设置一个定时任务,定时执行日志切割的脚本
1 操作步骤
a、新建日志分割的文件夹newlogs(mkdir /usr/local/nginx/newlogs)
b、编写脚本,暂且命名为:splitlogs.sh吧,脚本内容如下:
#!/bin/bash
LOGPATH=/usr/local/nginx/logs/access.log
BASEPATH=/usr/local/nginx/newlogs
LOGBAK=$BASEPATH/$(date -d yesterday +%Y-%m-%d).log
#echo $LOGBAK
mv $LOGPATH $LOGBAK
touch $LOGPATH
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
2 用 crontab -e 编辑定时器代码
]# crontab -l
50 3 * * * /root/nginx_splitlogs.sh >/dev/null 2>&1
每天凌晨3点50分执行
三 切割tomcat的日志文件
1 当文件大于100M的时候,先把文件复制到指定的目录,再清空原先tomcat的日志文件。
#!/bin/sh
log_dir=/var/log/tomcat
monitor_file=$1 #tomcat目录下的catalina.out文件的绝对路径
file_size=`du $monitor_file | awk '{print $1}'`
if [ $file_size -ge 102400 ]
then
if [ ! -d $log_dir ]
then
mkdir /var/log/tomcat #创建保存切割文件目录,这个路径可以自行修改,保存到你想要的目录
fi
cp $1 /var/log/tomcat/log-`date +%Y-%m-%d-%H:%M:%S`.log #保存日志文件
echo `date +%Y-%m-%d-%H:%M:%S`":文件切割" >>/var/log/tomcat/split.log #记录切割日志
echo "" > $1 #清空tomcat的log/catalina.out文件内容
fi
2 用 crontab -e 编辑定时器代码
*/1 * * * * sh /lee_js/monitor_script.sh /opt/apache-tomcat-7.0.67/logs/catalina.out
#第一个路径是脚本的路径,第二个参数是tomcat下catalina.out文件的绝对路径