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

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

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


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

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

[root@localhost ~]# cd /usr/local
[root@localhost local]# mkdir scripts
[root@localhost scripts]# vim nginxLog.sh
其内容如下:

 #! /bin/bash
cd /usr/local/nginx/logs/
newaccesslog="jrwh_access`date +%Y-%m-%d`.log"
mv access.log $newaccesslog
touch access.log
tar -zcvf $newaccesslog.tar.gz $newaccesslog --remove-files
newerrorlog="jrwh_error`date +%Y-%m-%d`.log"
mv error.log $newerrorlog
touch error.log
/etc/init.d/nginx restart
tar -zcvf $newerrorlog.tar.gz $newerrorlog --remove-files
#mv $newaccesslog.tar.gz /usr/local/nginx/logs/access/
切割Nginx日志 
 
对于超过6个月的日志文件进行删除
 #! /bin/bash

cd /home/scplog/wuhunews_log
find -mtime +186 -exec rm -rf {} \;
清理超过186天的日志
 
 

给脚本添加可执行权限:

[root@localhost scripts]# chmod a+x nginxLog.sh
添加定时任务(每天23:40执行):

[root@localhost scripts]# cd /var/spool/cron/
[root@localhost cron]# echo "40 23 * * * /usr/local/scripts/nginxLog.sh" > root
查看任务:

[root@localhost cron]# crontab -l
这样,第二天就可以看到效果了。最后的效果如下图所示:
wKiom1g7jvTQIhutAAAXVwvG1yI313.png

posted @ 2018-04-08 16:14  chadow  阅读(326)  评论(0编辑  收藏  举报