zoukankan      html  css  js  c++  java
  • Nginx 笔记与总结(5)访问日志管理:计划任务 + 日志切割

    要在第二天的凌晨把前一天的访问日志切割备份,并以时间作为文件名,例如:access.20150728.log,这就需要在 Linux 中格式化时间,例如:

    [root@localhost ~]#  date
    2015年 07月 28日 星期二 02:33:02 CST
     
    [root@localhost ~]# date -d yesterday
    2015年 07月 27日 星期一 02:33:18 CST
    
    [root@localhost ~]# date -d yesterday +%Y
    2015
    
    [root@localhost ~]# date -d yesterday +%y
    15
    
    [root@localhost ~]# date -d yesterday +%Y%m%d
    20150727
    

    编写 shell 脚本

    在根目录下创建 data 目录,用于存放 shell 脚本

    mkdir /data
    

    进入 /data 目录,创建 runlog.sh:

    cd /data
    vim runlog.sh
    

    【测试】 .sh 文件:

    echo `date -d yesterday +%Y%m%d`
    

    或者

    [root@localhost data]# vim runlog.sh
    echo $(date -d yesterday +%Y%m%d)
    

      

    保存退出

      

    然后运行该脚本:

    [root@localhost data]# sh runlog.sh 
    20150727
    

    测试结束。

     

    【测试2】

    输出备份后的文件路径

    vim runlog.sh
    

    runlog.sh:

    [root@localhost data]# vim runlog.sh
    
    bak=$BASELOG/$(date -d yesterday +%Y%m%d)
    LOGPATH=/usr/local/nginx/logs/dee.com.access.log
    BASELOG=/data
    
    bak=$BASELOG/$(date -d yesterday +%Y%m%d%H%M).dee.com.access.log
    echo $bak

    保存退出。

     

    运行 runlog.sh :

    [root@localhost data]# sh runlog.sh 
    /data/201507270317.dee.com.access.log
    

    测试结束。

     

    定义了备份后的文件路径之后,需要把原来的日志文件剪切到新的路径,同时新建一个访问日志文件,最后使用 nginx 信号控制中的 USR1 来完成日志切割:

    vim runlog.sh
    

    runlog.sh:

    LOGPATH=/usr/local/nginx/logs/dee.com.access.log
    BASELOG=/data
    
    bak=$BASELOG/$(date -d yesterday +%Y%m%d%H%M).dee.com.access.log
    
    mv $LOGPATH $bak
    touch $LOGPATH
    
    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    

      

    保存退出。

    创建计划任务(每分钟执行 1 次):

    crontab -e

    */1 * * * * sh /data/runlog.sh
    

    保存退出。

    此时 /data 目录下的文件:

      

      

    1 min 之后:

      

    2 min 之后:

      

    浏览文件:

      

    如果要把日志按照年月放进不同的路径下,可以:

    vim runlog.sh
    

    runlog.sh:

    LOGPATH=/usr/local/nginx/logs/dee.com.access.log
    BASEPATH=/data/$(date -d yesterday +%Y%m)
    
    mkdir -p $BASEPATH
    
    bak=$BASEPATH/$(date -d yesterday +%d%H%M).dee.com.access.log
    
    mv $LOGPATH $bak
    touch $LOGPATH
    
    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    

      

    保存退出。

    此时,有了 201507 的目录:

      

    目录下保存了最新的 log 文件,格式为:*日*时*分

      

      

  • 相关阅读:
    Java对【JSON数据的解析】--Gson解析法
    Java对【JSON数据的解析】--官方解析法
    Java之JSON数据
    网络编程应用:基于UDP协议【实现聊天程序】--练习
    {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
    PHP获取页面执行时间的方法(推荐)
    Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)
    Elasticsearch 全字段搜索_all,query_string查询,不进行分词
    mysql 查询某字段值全是数字
    linux服务器中Apache隐藏index.php失败
  • 原文地址:https://www.cnblogs.com/dee0912/p/4677697.html
Copyright © 2011-2022 走看看