前言
当前脚本用于对于某个日志文件的 回滚,可备份日志文件,可存储多个
假设 日志名称 为
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 #重新载入配置