频道栏目
首页 > 资讯 > Linux > 正文

Linux下添加shell脚本使得nginx日志每天定时切割压缩

16-12-07        来源:[db:作者]  
收藏   我要投稿

一 简介

对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大,比如像下面这样:

wKiom1g7jpOycr_0AAAKeSi6CEo960.png

这时,无论是出现异常时查日志,还是使用“GoAccess”等工具对日志进行分析都将会变得非常麻烦。因此,每天定时对nginx日志进行切割压缩就非常有必要了

二 实现

我的实现思路是每天晚上接近12点时定时执行脚本。其脚本内容就是将当前的nginx日志先按照当天日期进行重命名接着进行压缩,最后是新建空白的nginx日志文件,并重新载入nginx

[root@localhost~]#cd/usr/local
[root@localhostlocal]#mkdirscripts
[root@localhostscripts]#vimnginxLog.sh

其内容如下:

#!/bin/sh

cd/usr/local/nginx/logs/
newAccessLog="access`date+%Y-%m-%d`.log"
newErrorLog="error`date+%Y-%m-%d`.log"

mvaccess.log$newAccessLog
mverror.log$newErrorLog

#创建日志文件
touchaccess.logerror.log
#reloadNginx
/etc/init.d/nginxreload

#压缩日志文件
tar-zcvf$newAccessLog.tar.gz$newAccessLog--remove-files
tar-zcvf$newErrorLog.tar.gz$newErrorLog--remove-files

给脚本添加可执行权限:

[root@localhostscripts]#chmoda+xnginxLog.sh

添加定时任务(每天23:40执行):

[root@localhostscripts]#cd/var/spool/cron/
[root@localhostcron]#echo"4023***/usr/local/scripts/nginxLog.sh">root

查看任务:

[root@localhostcron]#crontab-l

这样,第二天就可以看到效果了。最后的效果如下图所示:

wKiom1g7jvTQIhutAAAXVwvG1yI313.png

注:如果有多个nginx日志文件的话可以考虑将我上面的脚本改成更加通用的形式

附:nginx日志定时清理脚本:

[root@localhostscripts]#vim/usr/local/scripts/cleanNginxLog.sh

其内容如下:

#!/bin/sh
cd/usr/local/nginx/logs/
find.-name"*`date-d'-1months'+%Y-%m-%d`*"-typef|xargs-I{}rm-f{}

注:上面脚本的意思是删除当前天之前一个月那天的日志文件

给脚本添加可执行权限:

[root@localhostscripts]#chmoda+x/usr/local/scripts/cleanNginxLog.sh

添加一条定时任务(每天0:30执行):

[root@localhostscripts]#echo"300***/usr/local/scripts/cleanNginxLog">>/var/spool/cron/root
相关TAG标签
上一篇:数据恢复:在Linux上恢复删除了的文件
下一篇:树莓派、Ubuntu安装build-essential遇到问题
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站