成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

脚本编程

  • 没有分类目录

最新文章

脚本编程
当前位置: 首页 » 脚本编程 » Nginx日志切割

Nginx日志切割

编辑:狂族晨曦 来源:脚本编程系统运维经验杂笔 日期:2017-02-06 阅读: 2,271 次 2 条评论 » 百度已收录

最后更新时间:2022-04-02

Nginx日志默认情况下统统写入到一个文件中,文件会变的越来越大,非常不方便查看分析,也会造成服务器硬盘占用越来越大。我们通常是每天对Nginx的日志做切割。

Nginx日志切割方法有很多种,本文主要讲的是用shell脚本对日志压缩切割。

Nginx日志切割-单个日志

有时候我们的日志只有两个,一个access的,一个error的。可能只有access的日志比较大,通常错误日志又不会太大,那么需求只对access的日志进行切割。这时候用这个单个日志切割的脚本即可,优点是比较简单。

#!/bin/sh
cd /usr/local/nginx/logs/
#压缩并按日期命名access.log日志
tar -zcvf log_history/access_`date +%Y%m%d`.log.tar.gz access.log
#删除源日志
rm -fr access.log
#删除15天前的切割日志
find /usr/local/nginx/logs/ -name "*.log.tar.gz" -type f -mtime +15 -exec rm {} \; > /dev/null 2>&1
#向 Nginx 的进程发送 USR1 信号以重新打开日志文件
killall -s USR1 nginx

Nginx日志切割-多个日志

若Nginx配置了虚拟主机等会保存多个日志的,可能还需要对多个日志进行切割,那么就可以使用以下脚本进行多个日志切割。

#!/bin/sh
if [ ! -d /usr/local/nginx/logs/log_history ]; then
  mkdir /usr/local/nginx/logs/log_history
fi
cd /usr/local/nginx/logs/
array=(access error host.access host.error host.ssl-access host.ssl-error)
for data in ${array[@]}  
do
tar -zcvf log_history/${data}_`date +%Y%m%d`.log.tar.gz ${data}.log >> /dev/null
rm -fr ${data}.log 
done
find /usr/local/nginx/logs/log_history/ -name "*.log.tar.gz" -type f -mtime +15 -exec rm {} \; > /dev/null 2>&1
killall -s USR1 nginx

Nginx日志切割-定时任务

无论是单个日志切割,还是多个日志切割,都需要使用cron服务定期执行该脚本,下面设置成的是每晚23点59执行,这样nginx访问日志正好记录的是全天的访问记录。

#crontab -e
59 23 * * * /usr/local/nginx/logs/nginx_access_log.sh

定时任务

定时任务

标签:
除特别注明外,本站所有文章均为成航先森 www.capjsj.cn 原创,本文共1243个字
转载请注明出处来自https://www.capjsj.cn/nginx_log_cutting.html
已有 2 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 的头像

    用shell脚本对日志压缩切割的方法很不错,感谢分享!

    2017-02-07 13:06 回复
  2. 学习了

    2017-02-18 11:30 回复
官方微信
发表评论 返回顶部