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

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

  • 相关阅读:
    nodejs入门API之http模块
    nodejs入门API之fs模块
    编程官方文档中的方法参数格式的含义
    vs Code编辑器智能提示功能
    nodejs入门之模块
    git的安装与使用
    TypeScript入门九:TypeScript的模块
    TypeScript入门八:TypeScript的命名空间
    TypeScript入门七:TypeScript的枚举
    TypeScript入门六:TypeScript的泛型
  • 原文地址:https://www.cnblogs.com/imoing/p/logrotateshell.html
Copyright © 2011-2022 走看看