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即可。

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

  • 相关阅读:
    例3-7 统计字符
    大一第四周
    例3-5 四则运算
    MyBatis 查询缓存
    MyBatis 延迟加载
    Mybatis 关联查询
    Mybatis 动态SQL
    MyBatis mapper动态代理
    MyBatis 增删改查
    MyBatis 框架搭建
  • 原文地址:https://www.cnblogs.com/imoing/p/logrotateshell.html
Copyright © 2011-2022 走看看