zoukankan      html  css  js  c++  java
  • Nginx 日志自动分割

    Nginx 的日志都是写在一个文件当中的,不会自动地进行切割,如果访问量很大的话,将导致日志文件容量非常大,不便于管理和造成Nginx 日志写入效率低下等问题。所以,往往需要要对access_log、error_log日志进行切割。

    切割日志一般利用USR1信号让nginx产生新的日志。实例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/bin/bash

    logdir="/data/logs/nginx"
    pid=`cat $logdir/nginx.pid`
    DATE=`date -d "1 hours ago" +%Y%m%d%H`
    DATE_OLD=`date -d "7 days ago" +%Y%m%d`
    for i in `ls $logdir/*access.log`; do
    mv $i $i.$DATE
    done
    for i in `ls $logdir/*error.log`; do
    mv $i $i.$DATE
    done
    kill -s USR1 $pid
    rm -v $logdir"/access.log."$DATE_OLD*

    rm -v $logdir"/error.log."$DATE_OLD*

    1、分析:

    • 将上面的脚本放到crontab中,每小时执行一次(0 ),这样每小时会把当前日志重命名成一个新文件;然后发送USR1这个信号让Nginx 重新生成一个新的日志。(相当于备份日志)
    • 将前7天的日志删除;

    2、说明:
    在没有执行kill -USR1 $pid之前,即便已经对文件执行了mv命令而改变了文件名称,nginx还是会向新命名的文件”*access.log.2016032623”照常写入日志数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。

    3、logrotates:
    使用系统自带的logrotates,也可以实现nginx的日志分割,查看其bash源码,发现也是发送USR1这个信号。

  • 相关阅读:
    css 中关于border-color 继承了color的说明
    关于飞书的相关开发案例
    好看的点赞设计
    较好的设计网站参考
    较好的B端设计体验 说明
    基于vue的流程图插件
    较好看的中后台模板(ui)
    前端笔记-201807
    前端笔记(201905-201906)
    前端笔记(201902-201904)
  • 原文地址:https://www.cnblogs.com/fjping0606/p/7944507.html
Copyright © 2011-2022 走看看