zoukankan      html  css  js  c++  java
  • sed 切割nginx日志文件问题

    问题:
    使用

    sed -n "/04/Apr/2016/,/05/Apr/2016/"p access.log > test.log  
    这句话无论如何也没办法成功,但是
    
    sed -n "/05/Apr/2016/ ,$"p access.log >  test.log  
    就能成功截取。
    

    最后发现sed的参数其实是 查找 已经存在的文字,(重要)
    由于今天下午(4月5号)清理了一次日志,当然就不会存在有“/04/Apr/2016/”的字符串存在的行
    第一句截不出东西的命令,第一个参数“/04/Apr/2016/”是起始,第二个参数“/05/Apr/2016/”是结束,sed执行到第一个“/05/Apr/2016/”就停下了,所以什么都没截出来;
    第二个能够成功的命令,起始是“/05/Apr/2016/”,结束是“$"(就是文件结尾),当然能截下文件
    结论:
    既然是每周截取一次,截取后清空日志文件,那就直接复制日志文件去该去的目录,然后goaccess好了。。。。。。。。

    最终文件:

    
    1 #!/bin/bash
    2
    3 monday_year=$(date -d 'last monday' +"%Y")
    4 f_monday_month=$(date -d 'last monday' +"%m")
    5 monday_day=$(date -d 'last monday' +"%d")
    6
    7 now_year=$(date -d 'now' +"%Y")
    8 f_now_month=$(date -d 'now' +"%m")
    9 now_day=$(date -d 'now' +"%d")
    10
    11 #filename_day=$monday_year$f_now_month$monday_day'-'$now_year$f_now_month$now_day
    12 filename_day=$now_year$f_now_month$now_day
    13 echo $filename_day
    14
    15 echo 1
    16 #access
    17 if test -s /usr/local/nginx/logs/access.log ;
    18 then
    19 filename=$filename_day
    20 cp /usr/local/nginx/logs/access.log /var/www/html/logs_backup/access/$filename.log
    21 zcat -f /var/www/html/logs_backup/access/$filename.log | /usr/local/bin/goaccess -a -p /root/.goaccessrc > /var/www/html/logs_html/access/$filename.html
    22 fi
    23
    24 echo 2
    25 #mantis
    26 if test -s /usr/local/nginx/logs/mantis.log;
    27 then
    28 filename=$filename_day
    29 cp /usr/local/nginx/logs/mantis.log /var/www/html/logs_backup/mantis/$filename.log
    30 zcat -f /var/www/html/logs_backup/mantis/$filename.log | /usr/local/bin/goaccess -a -p /root/.goaccessrc > /var/www/html/logs_html/mantis/$filename.html
    31 fi
    32
    33 echo 3
    34 #blog
    35 if test -s /usr/local/nginx/logs/blog.log;
    36 then
    37 filename=$filename_day
    38 cp -f /usr/local/nginx/logs/blog.log /var/www/html/logs_backup/blog/$filename.log
    39 zcat -f /var/www/html/logs_backup/blog/$filename.log | /usr/local/bin/goaccess -a -p ~/.goaccessrc > /var/www/html/logs_html/blog/$filename.html
    40 fi
    41
    42 echo 4
    43 log_report/goaccess_log.sh
    
    
  • 相关阅读:
    gitlab环境搭建
    PHP能引起安全的函数
    PHP扩展安装方法
    如果Centos没有桌面,怎么修改IP地址
    解决docker 下来镜像出现 error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net的问题
    systemd详解(CentOS 7)
    正确修改MySQL最大连接数的三种好用方案
    CentOS7 yum安装mysql5.5/5.6并初始化
    CentOS7系统配置国内yum源和epel源
    导入镜像后,容器内httpd起不来
  • 原文地址:https://www.cnblogs.com/JohannaFeng/p/5642058.html
Copyright © 2011-2022 走看看