• linux根据时间段对日志文件进行,匹配,备份日志,并删除


    写了一个生成日志文件的shell脚本和python脚本,供测试使用

    Shell脚本内容

    #!/bin/bash
    mdate=`date +%Y-%m-%d-%H:%M:%S`
    LogFile=/home/test/han/a.log
    for((i=1;i<=100;i++));  
    do   
    echo  $mdate disk is good!   $i      >> $LogFile
    sleep 2s 
    done
    
    
    生成的日志文件格式内容为
    2020-12-24-17:35:02 disk is good! 1
    2020-12-24-17:35:02 disk is good! 2
    2020-12-24-17:35:02 disk is good! 3
    2020-12-24-17:35:02 disk is good! 4
    2020-12-24-17:35:02 disk is good! 5

     Python内容

    import logging
    import time
    def something():
        for i in range(1,100):
            time.sleep(2)
            logging.basicConfig(level=logging.INFO,filename='new.log',filemode='a', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
            logging.info(u"print %s" %i)
    something()
    
    
    生成日志文件格式内容为
    2020-12-23 14:57:53,803 - root - INFO - print 1
    2020-12-23 14:57:55,805 - root - INFO - print 2
    2020-12-23 14:57:57,809 - root - INFO - print 3
    2020-12-23 14:57:59,811 - root - INFO - print 4
    2020-12-23 14:58:01,814 - root - INFO - print 5
    2020-12-23 14:58:03,817 - root - INFO - print 6
    2020-12-23 14:58:05,821 - root - INFO - print 7
    2020-12-23 14:58:07,824 - root - INFO - print 8

     根据时间段对日志文件进行匹配,备份,再删除原文件备份的内容,同时还要保持python程序往日志里面不间断的写入

    #!/bin/bash
    cd $(dirname $0)
    
    #匹配当天的日志并删除
    #sed -n "/^$(date +%Y-%m-%d)/,/^$(date +%Y-%m-%d)/p" test.log > ./log/b.log && sed -i "/^$(date +%Y-%m-%d)/d" test.log
    
    #匹配前一天的日志
    #sed -n "/^$(date +%Y-%m-%d -d '-1 days')/,/^$(date +%Y-%m-%d -d'-1 days')/p" test.log > ./log/test_$(date +%Y-%m-%d -d '-1 days').log
    
    #匹配前一天的日志第二种方法
    awk -v a=`date +%Y-%m-%d -d "-1 days"` '{if($1==a) print $0}' test.log >> ./log/test2_$(date +%Y-%m-%d -d '-1 days').log &&  
    sed -i "/^$(date +%Y-%m-%d -d '-1 days')/d" test.log
    
    #匹配前一天的日志第三种方法,先备份,再全部清空
    cp ventilator.log ./log/ventilator_$(date +%Y-%m-%d -d '-1 days').log && echo -n "" > test.log

     最后选用的第三种方法,原因是前两种删除原文件前一天的日志之后,python程序不再对原文件写入日志,原因不详,第三种方法是可以的。

    不过,我还是觉得每天生成一个新的日志然后对前一天的日志进行挪走备份,这样多好,,,,,,,,,,,,,,,,,,,,,,,,

  • 相关阅读:
    Kubernetes(K8S)集群部署搭建图文教程(最全)
    Kubernetes核心原理和搭建
    Navicat Premium 15注册出现“rsa public key not find”
    centos 7永久修改主机名
    docker 部署jenkins,及构建执行scp指令,一直处于构建状态以及钉钉通知配置
    jenkins 无法连接仓库:Command /usr/bin/git ls-remote -h
    mysql 8.0安装包下载地址
    centos7安装xtrabackup 物理备份工具与使用
    Linux vi/vim编辑器
    解决报错docker 启动报 WARNING: IPv4 forwarding is disabled. Networking will not work.
  • 原文地址:https://www.cnblogs.com/hanjianfei/p/14185419.html
Copyright © 2020-2023  润新知