nginx日志切割

当网站访问量十分后,日志数据就是会成千上万,如果周状及一个日记文件中错过,文件会变得尤其深。文件充分快就见面减缓下来,比如一个文件几百兆。写副日志的时,会影响操作速度。另外,如果自身怀念看看访问日志,一个几百兆之文本,下载下来打开也颇缓慢。

以方便对日记进行剖析计算,需要针对日记进行定时切割。定时切割的点子来论月切割、按上切割,按小时切割等。最常用的凡随上切割。

配置shell脚本

#!/bin/bash
# 必须每天00:00运转

#日志保存天数
DAY=7

LOGS_PATH=”/usr/local/webserver/nginx/logs” #nginx日志存放目录

mkdir -p ${LOGS_PATH}/$(date -d “yesterday” +”%Y”)/$(date -d
“yesterday” +”%m”)  #树立为日期的日记文件夹
mv -f ${LOGS_PATH}/access.log ${LOGS_PATH}/$(date -d “yesterday”
+”%Y”)/$(date -d “yesterday” +”%m”)/access_$(date -d “yesterday”
+”%Y%m%d”).log    #备份access.log到因日期的日记文件夹着
mv -f ${LOGS_PATH}/error.log ${LOGS_PATH}/$(date -d “yesterday”
+”%Y”)/$(date -d “yesterday” +”%m”)/error_$(date -d “yesterday”
+”%Y%m%d”).log    #备份error.log到以日期的日记文件夹着

/etc/init.d/nginx reload   #重载告诉nginx重新打开日志。
for ACCESS_LOG in `find ${LOGS_PATH}/ -type f -name
“access_[0-9]*.log” -mtime +${DAY}`;do   
rm -f ${ACCESS_LOG}
done        #去除7天以前的日志。
for ERROR_LOG in `find ${LOGS_PATH}/ -type f -name
“error_[0-9]*.log” -mtime +${DAY}`;do
rm -f ${ERROR_LOG}
done    

######## -mtime   -n +n               
#按文件更改时间来查找文件,-n指n天内,+n指n天以前

 

写副到计划任务中:

00 00 * * * /bin/sh
/usr/local/webserver/nginx/script/cut_nginx_log.sh

相关文章