前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx日志切割及7天前的历史日志删除脚本

nginx日志切割及7天前的历史日志删除脚本

作者头像
张戈
发布2018-03-23 17:15:07
1.9K0
发布2018-03-23 17:15:07
举报
文章被收录于专栏:张戈的专栏张戈的专栏

上次写到《服务器日志备份超节省空间的思路》,压缩后磁盘占用由 93%降到了 62%,效果还是不错的!为什么不直接删除呢?其实是因为这些日志涉及到支付等重要业务,保存半年以上也算是保守的做法。

今早,又发现几例磁盘空间报警,占用率都在 90%+,关键居然是根分区!这要是日志突然暴涨,把根分区撑爆了,那就可以体验到“菊花一紧”的快感了吧?

索性利用 CRT 的全局命令把磁盘空间占用率超过 75%的服务器筛选出来,打算继续进行清理磁盘空间这个枯燥的工作。结果,发现好几台 nginx 方向代理服务器的日志居然还没做分割处理,一个 access.log 居然近 200G 大小!真是 I 服了 U

于是,就有了下面这个日志切割脚本,按日期切割 nginx 日志,并自动删除 7 天前的日志(日志均已同步至专用日志存储服务器,可放心删除历史日志。)

代码语言:javascript
复制
#!/bin/bash
#初始化
LOGS_PATH=/data/nginx/logs/www.domain.com
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#按天切割日志
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
#向 Nginx 主进程发送 USR1 信号,重新打开日志文件,否则会继续往mv后的文件写内容,导致切割失败.
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
#删除7天前的日志
cd ${LOGS_PATH}
find . -mtime +7 -name "*20[1-9][3-9]*" | xargs rm -f
exit 0

将这个脚本添加到计划任务,每天执行一次即可:

代码语言:javascript
复制
1 0 * * * /usr/local/script/cut_del_logs.sh

此方法,网上一搜一大把,因此本文仅作为个人工作记录,并非教程,随便看看就行,别太在意。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年07月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档