zoukankan      html  css  js  c++  java
  • Nginx基础05:Nginx日志分割

    nginx日志分割非常重要,可对nginx日志进行切割和分析处理,比如实现一个定时任务,去处理nginx日志

    推荐:小型网站1-2天分割一次、中型网站1天分割一次、大型网站每小时分割一次

    分割步骤:

    • 写一个shell,把原日志文件移动到日志备份目录下
      • shell脚本命名log.sh,放入到 nginx/sbin目录下
      • shell脚本内容如下
    • 原日志文件重新生成新文件
      • 执行shell脚本需对脚本文件有访问执行权限:chmod 777 log.sh
    • 定时脚本,定时移动日志文件
      • 执行#crontab -e
      • 添加定时执行脚本:*/1 * * * * sh /usr/local/nginx/sbin/log.sh    表示每分钟执行一次脚本
    #!/bin/sh
    
    #基础路径
    BASE_DIR=/usr/local/nginx
    #待分割备份的日志文件
    BASE_FILE_NAME=nginx.com.log
    
    #原日志文件目录
    CURRTENT_PATH=$BASE_DIR/logs
    #备份日志文件目录
    BAK_PATH=$BASE_DIR/datalogs
    
    #待分割备份的日志文件全路径:/usr/local/nginx/logs/nginx.com.log
    CURRTENT_FILE=$CURRTENT_PATH/$BASE_FILE_NAME
    
    #生成备份文件时前缀:202006071030,当前表达式是每分钟备份一次,如果每天备份一次去掉%H%M
    BAK_TIME=`/bin/date -d yesterday +%y%m%d%H%M`
    #备份日志文件全路径:/usr/local/nginx/datalogs/202006071030-nginx.com.log
    BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME
    
    #输出备份文件日志名称,可有可无
    echo $BAK_FILE
    
    #备份之前先停止nginx
    $BASE_DIR/sbin/nginx -s stop
    
    #原日志文件移动到指定的备份文件
    mv $CURRTENT_FILE $BAK_FILE
    
    #启动nginx,重新生成带分割的日志文件
    $BASE_DIR/sbin/nginx

    shell脚本知识点:

      "`"是1前面的点,在shell脚本中表示执行两点之间的内容,与$(…执行内容…)效果相同

  • 相关阅读:
    cocos2d-x把json数据解析到数组或字典中(libjson库)
    (bug更正)利用KVC和associative特性在NSObject中存储键值
    第二次博客作业
    我的感想
    期末总结
    陈老师作业
    第三次作业---四则运算的进一步完善
    好难
    对git的认识
    计应143 卞玉新
  • 原文地址:https://www.cnblogs.com/chai-blogs/p/13059902.html
Copyright © 2011-2022 走看看