zoukankan      html  css  js  c++  java
  • nginx 日志分割

    Linux系统

    #nginx日志切割脚本
    
    #!/bin/bash
    
    #设置日志文件存放目录
    logs_path="/usr/local/nginx/logs/"
    
    #设置pid文件
    pid_path="/usr/local/nginx/nginx.pid"
    
    #重命名日志文件
    mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
    
    #向nginx主进程发信号重新打开日志
    kill -USR1 `cat ${pid_path}`

     

    windows系统

    nginx的日志都写在一个文件里,这个文件越来越大

    写一个bat脚本,按天来分割日志

    原理:每天凌晨将nginx日志  重命名为 access-日期.txt

    然后调用nginx -s  reopen 命令重新打开日志文件

    log.bat   如下

    @echo off
    
    set name=access-%date%
    move access.log %name%.log
    
    nginx -s  reopen

    我们可以简单的把日志文件mv走,但是你会发现mv走后新的日志文件没有重新生成,

    一般linux下用的文件句柄,文件被打开情况下你mv走文件,但是原来操作这个文件的进程还是有这个文件的inode等信息,

    原进程还是读写原来的文件,因此简单的mv是无法生效的。

    因此建议过程如下

    1. mv原文件到新文件目录中,这个时候 nginx还写这个文件(写入新位置文件中了)

    2. 调用nginx -s  reopen用来打开日志文件,这样nginx会把新日志信息写入重新打开的日志

    (重新打开的日志就是配置文件中设置的位置和名称)

    这样完成了日志的切割工作, 同时切割过程中没有日志的丢失。

    然后将这个bat文件加入windows 计划任务,每天凌晨执行一次。

  • 相关阅读:
    函数参数
    文件操作
    is,数据类型补充,set,深浅拷贝
    is,==区别,编码转换
    列表,元祖,range
    字典,解构
    编码,基础数据类型 int str bool,for循环
    while循环,格式化输出,运算符
    java7中使用透明时与输入法冲突
    TC SRM 597 DEV2
  • 原文地址:https://www.cnblogs.com/centos2017/p/9935706.html
Copyright © 2011-2022 走看看