zoukankan      html  css  js  c++  java
  • 如何对Nginx日志文件进行切割保存

    日积月累下,日志文件会越来越大,日志文件太大严重影响服务器效率,须要定时对日志文件进行切割。
    切割的方式有按月切割、按天切割、按小时切割,一般都是按天切割。
    那么如何进行切割呢?
    思路:

    1. 创建日志文件存放路径
    2. 将日志文件以当天时间为名字进行重命名
    3. 发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件

    思路知道了,能不能具体点,show me code
    下面以每天凌晨00:00切割nginx的访问日志access_log为例,详细讲解切割步骤

    步骤一:创建一个div_nginx_log.sh脚本,输入下面按天切割日志文件的shell脚本

    #!/bin/bash
    // nginx的日志文件路径
    logs_path="/data1/logs/"
    
    // 创建日志文件存放路径
    mkdir -p ${logs_path}$(date -d "yesterday" + "%Y")/$(date -d "yesterday" + "%m")/
    // 将日志文件以当天时间为名字进行重命名
    mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
    // 发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件
    kill -USR1 `cat /var/nginx/nginx.pid`
    
    

    步骤二:设置crontab,每天凌晨00:00切割nginx日志文件

    // 进入编辑crontab
    crontab -e
    
    // 输入配置
    // div_nginx_log.sh脚本的路径要写绝对路径
    00 00 * * * /bin/bash /root/div_nginx_log.sh
    
    

    按上面两个步骤来,这样就大功告成了

    注意:

    若更改crontab配置后不起效果,重新加载cron:/etc/init.d/cron reload
    若还不行就重启crontab服务:/etc/init.d/crond restart

  • 相关阅读:
    Git单独checkout子目录
    GitHub上有很多不错的iOS开源项目
    iOS image caching. Libraries benchmark (SDWebImage vs FastImageCache)
    hosts etc css-js
    CFNetwork SSLHandshake failed (-9824) ios 9
    javascript基础---常见的语法
    Javascript 基础—变量 &运算符
    nodejs 版本dockerfile 文件制作,和常用命令
    pm2 的使用
    Nodejs 中常见的加密算法:RSA(1)
  • 原文地址:https://www.cnblogs.com/phonecom/p/11224387.html
Copyright © 2011-2022 走看看