zoukankan      html  css  js  c++  java
  • linux日志自动分割shell

    随着服务器运行时间不断增加,各种日志文件也会不断的增长,虽然硬盘已经是白菜价了,但是如果当你看到你的一个日志文件达到数十G的时候是什么感想?下面的脚本实现了如下功能:

    • 自动对日志文件进行分割
    • 对分割后的日志文件进行压缩
    # 以在阿里云上运行的nginx服务为例
    date=`date +%Y-%m-%d_%H-%M-%S`
    rotatename=/alidata/server/nginx/logs/access.${date}.log
    logname=/alidata/server/nginx/logs/access.log
    if [ -f "$rotatename" ]
    then
            sleep 1
            date=`date +%Y-%m-%d-%H-%M-%S`
            rotatename=/alidata/server/nginx/logs/access.${date}.log
    fi
    mv $logname $rotatename
    # 告知应用程序重载配置文件(不进行次步骤的话日志会记录到重命名后的文件中),
    # 不同的应用程序此步骤可能会不一样
    kill -USR1 `cat /alidata/server/nginx/logs/nginx.pid`
    # 等待1s,使重载配置文件生效
    sleep 1
    # gzip压缩,如果已经有了特别大的日志量,建议先手动使用split命令进行分割,
    # 然后再分别进行压缩,否则会消耗大量cpu并影响线上业务
    gzip $rotatename

    在crontab中根据自己需要定时执行此shell即可。

    如果再优化一下还可以把以日期为分割标准改为以文件大小为分割标准,此时定时任务的执行频率可以相对频繁一些。

  • 相关阅读:
    Java中DAO的实现
    使用Fabric自动化你的任务
    JAVA中处理事务的程序--多条更新SQL语句的执行(包括回滚)
    财政业务流程
    ubuntu 14.04 install google chrom stable
    gcc编译命令
    textread 用法
    ubuntu software
    Coursera.org打不开怎么办
    Presentation__short sentence review mining
  • 原文地址:https://www.cnblogs.com/imoing/p/logrotateshell.html
Copyright © 2011-2022 走看看