shell脚本日志回滚(完整代码)

前言

当前脚本用于对于某个日志文件的 回滚,可备份日志文件,可存储多个
假设 日志名称
temp.log
备份日志名称
temp.log.1 \
temp.log.2 \
temp.log.3 \
temp.log.4 \

总日志个数 设定为6个(1个日志,5个备份日志)
单个日志大小 大于 500K 时,自动备份
日志路径 设定为 /tmp/temp.log

以上配置均可自己适配

shell脚本如下

cat /home/qxy/shell/RollBack.sh

#!/bin/bash
# ----------------------------------------------------
# > File Name: Rollback.sh
# > Author: qxy
# > Created Time: Sun 17 Mar 2024 02:08:01 AM UTC
# > Modified Time:Sun 17 Mar 2024 03:58:50 AM UTC
# ----------------------------------------------------

# 当前脚本为 日志回滚脚本
# 日志名称为 
#       temp.log
# 备份日志名称为  
#       temp.log.1 \ 
#       temp.log.2 \ 
#       temp.log.3 \ 
#       temp.log.4 \ 
#       ...
# 总日志个数 设定为6个(1个日志,5个备份日志)
# 日志大小大于 500K 时,自动备份
# 日志路径 设定为 /tmp/temp.log

PATH_NAME="/tmp/temp.log"
FILE_MAX_NUMS=6
FILE_MAX_SIZE=500*1024

if [ -s $PATH_NAME ]; then
    # echo "FILE is exixt"
    FILE_SIZE=`wc -c $PATH_NAME | awk {'print $1'}`
    # echo "file size $FILE_SIZE"
    if (($FILE_SIZE >= FILE_MAX_SIZE)); then
        # echo "file sieze > $FILE_MAX_SIZE!!!"
        # 获取文件个数
        FILE_NUMS=`ls -l $PATH_NAME* | wc -l`
        # echo "file nums is $FILE_NUMS"
        # 判断文件个数 是否超过 设定值,如果超出 删除 temp.log.6
        if (($FILE_NUMS >= $FILE_MAX_NUMS)); then
            # echo "file nums > $FILE_MAX_NUMS"
            ((FILE_MAX_NUMS--))
            rm -rf $PATH_NAME.$FILE_MAX_NUMS
        fi
        # 根据文件个数,由后往前 mv 重命名
        ((FILE_NUMS--))
        FILE_NUMS_OLD=$FILE_NUMS
        ((FILE_NUMS--))
        while [ $FILE_NUMS -gt 0 ]; do
            mv $PATH_NAME.$FILE_NUMS $PATH_NAME.$FILE_NUMS_OLD
            ((FILE_NUMS--))
            ((FILE_NUMS_OLD--))
        done
        # mv temp.log
        mv $PATH_NAME $PATH_NAME.1
        echo " Rollback completed "
    else
        echo "File < $FILE_MAX_SIZE...wait..."
    fi
else
    echo "File $PATH_NAME is No exixt or File is empty"
fi

添加脚本到定时任务中

cron.d 目录下文件添加

/etc/cron.d/ 目录下创建文件,也可以直接在 /etc/crontab 文件中直接添加(不太推荐)

文件内容格式如下

vi /etc/cron.d/RolBack

# Example of job definition:
# .---------------- minute (0 - 59)		间隔*分钟执行一把
# |  .------------- hour (0 - 23)		间隔*小时执行一把
# |  |  .---------- day of month (1 - 31)	每个月的*天执行一把
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...	每年的*月执行一把
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR 	sun,mon,tue,wed,thu,fri,sat		每周的周*执行一把
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
*/1 *    * * *   root    /home/qxy/shell/RollBack.sh > /dev/null 2>&1
# 每分钟执行一次

重启cron服务

由于Cron 是Linux的内置服务,cron服务控制:

/sbin/service crond start 	#启动服务
/sbin/service crond stop 	#关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload 	#重新载入配置

– end –

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值