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

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

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

对于nginx的日志文件,尤其是访问日志,如果我们不尽一切努力去解决,这个文档最终可能会越来越庞大,比如下面这个:

这时候发现异常可能越来越不方便查看日志,或者用“GoAccess”等专用工具分析日志。所以每天定时对nginx原木进行激光切割压缩是很有必要的。

二完成

我的想法是每晚12点定时重启脚本。脚本的内容是根据当前日期对当前nginx日志进行重命名,然后进行压缩,最后创建空缺失的nginx日志文件,重新加载nginx。

[root@localhost ~]# cd /usr/local [root@localhost local]# mkdir scripts [root@localhost scripts]# vim nginxLog.sh

其内容如下:

#!/bin/sh cd /usr/local/nginx/logs/ newAccessLog="access`date %Y-%m-%d`.log" newErrorLog="error`date %Y-%m-%d`.log" mv access.log $newAccessLog mv error.log $newErrorLog #建立日志文件 touch access.log error.log #reload Nginx /etc/init.d/nginx reload #压缩日志文件 tar -zcvf $newAccessLog.tar.gz $newAccessLog --remove-files tar -zcvf $newErrorLog.tar.gz $newErrorLog --remove-files

向脚本添加可执行管理权限:

[root@localhost scripts]# chmod ax 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

这样第二天就能看到实际效果了。最终的实际效果如下图所示:

注意:如果有几个nginx日志文件,请考虑把我的脚本改成更通用的方式。

附:nginx日志定期执行清理脚本:

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

其内容如下:

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

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

向脚本添加可执行管理权限:

[root@localhost scripts]# chmod ax /usr/local/scripts/cleanNginxLog.sh

添加一个计划任务(每天0:30执行):

[root@localhost scripts]# echo "30 0 * * * /usr/local/scripts/cleanNginxLog" >> /var/spool/cron/root


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/778276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存