#!/bin/bash
#保留文件数,默认值
ReservedNum=5
#最大文件数,默认值
MaxNum=30
#要删除文件的,父级目录,需要修改
FileDir=../../build_debug/bin/tkserverlog/
if [ $1 ]; then
ReservedNum=$1
fi
if [ $2 ]; then
MaxNum=$2
fi
if [ $ReservedNum -lt 1 ]; then
echo "[ERROR] Param Error! Please input ReservedNum > 1"
exit
fi
if [ $ReservedNum -ge $MaxNum ]; then
echo "[ERROR] Param Error! Please input ReservedNum < MaxNum"
exit
fi
while true ; do
if [ ! -e "$FileDir" ]; then
echo "Current File Folder Is Not Exist"
sleep 5s
continue
fi
FileNum=$(ls -l $FileDir|grep ^- |wc -l)
if [ $FileNum -gt $MaxNum ]; then
date=$(date "+%Y%m%d-%H%M%S")
while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt $FileDir| head -1)
echo $date "Delete File:"$OldFile
rm -rf $FileDir/$OldFile
let "FileNum--"
done
fi
sleep 10s #定时检测时间
done
第一个参数是保留文件数,第二个参数是最大文件数,可以传入值修改
举例,新建一个shell文件,delete_logs_regular.sh,将上述代码复制进去,运行
./delete_logs_regular.sh 5 30