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

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

  • 相关阅读:
    (转载) Hadoop科普文——常见的45个问题解答
    JSP---设置CooKIe
    JSP---使用HTML完成定时跳转功能
    JSP接受全部请求参数名称及其对应内容
    JSP用户登录程序实现
    jsp连接数据库MySql
    MapReduce程序--成绩统计
    Java中的StringTokenizer类的使用方法
    eclipse hadoop开发环境配置
    解决SDK Manager无法更新问题
  • 原文地址:https://www.cnblogs.com/imoing/p/logrotateshell.html
Copyright © 2011-2022 走看看