七乐彩兑奖游戏规则

定时清理指定路径下的文件(日志文件)

#!/bin/bash
 
# ==========================================
# 功能:清理指定路径下的文件,但不清理制定的需排除的文件和其?#26087;?
# 方法:配合crontab作为定时任务每天执行
# 返回:无
# 日期:2018-04-23
#  By:Xuejie
# 其他:无
# ==========================================
 
# 创建保存历史日志清除记录的文件/opt/cleanlogs/clean_log.log
createLogFile()
{
        targetDir=$1
        targetFile=$2
 
        if [ ! -d $targetDir ];then
                mkdir -p $targetDir
        fi
 
        if [ ! -f $targetFile ];then
                touch $targetFile
        fi
}
 
# 将信息写入日志文件中
logToFile()
{
        msg=$1
        targetFile=$2
        echo $msg >> $targetFile
}
 
# 获取根目录?#25490;?#20351;用率和剩余可?#27599;?#38388;大小,以数组形式返回
getRootDirUsageRate()
{
        usagepcent=`df / -h | awk '$6=="/"{sub("%","",$5);print $5}'`
        availDisk=`df / -h | awk '$6=="/"{print $4}'`
        array=($usagepcent $availDisk)
        echo ${array[*]}
}
 
# 根据输入的实际?#25490;?#20351;用率、实际可用大小、使用率阈值、预期可用?#25490;?#31354;间阈值判断是否符合要求
# 返回1表示符合要求,返回0表示不符合要求
isDiskUsageOK()
{
        # 实际使用率,去掉%后的数字
        usagepcent=$1
        # 实际可用?#25490;?#31354;间,单位可能是K/M/G
        availDisk=$2
        # 使用率阈值,去掉%后的数字
        threshHoldPcent=$3
        # 可用?#25490;?#31354;间阈值,无单位(表示G)
        threshHoldAvailDisk=$4
 
        if [ ${availDisk:0-1} = "g" -o ${availDisk:0-1} = "G" ]
        then
                availDiskNoUnit=`echo $availDisk|awk '{sub(/.$/,"")}1'`
 
                if [ `echo "$usagepcent > $threshHoldPcent" | bc` -eq 1 ] || [ `echo "$availDiskNoUnit < $threshHoldAvailDisk" | bc` -eq 1 ]
                then
                        echo "0"
                else
                        echo "1"
                fi
 
        else
                echo "0"
        fi
 
}
 
# 生成的日志目录
targetDir="/datadrive/logs/shell/cleanlogs/"
# 生成的日志文件
targetFile="${targetDir}clean_log.log"
# 待删除文件所在路径
targetLogDir="/datadrive/logs/"
 
# 可用?#25490;?#31354;间阈值,单位默认为G
availDiskThresh=5
# ?#25490;?#20351;用率,单位默认为%
diskUsagePcent=80
# 除了这些文件/文件夹不做处理
exceptDirArray=("shell" "test.log")
# 是否删除子文件夹目录
isDeleteDirectory=0
 
createLogFile $targetDir $targetFile
 
result=(`getRootDirUsageRate`)
 
beginCleanTime=`date '+%Y-%m-%d %H:%M:%S'`
 
logToFile "===========================================" $targetFile
logToFile "[***] Scanning time : ${beginCleanTime}" $targetFile
logToFile "/ Disk info: Avail:${result[1]}      Use%:${result[0]}%" $targetFile
logToFile "-------------------------------------------" $targetFile
 
 
 
isOK=`isDiskUsageOK ${result[0]} ${result[1]} $diskUsagePcent $availDiskThresh`
 
if [ $isOK = "0" ]
then
 
        logToFile "[+] Starting to clean logs ..." $targetFile
 
        for item in `ls ${targetLogDir}`;do
        #跳过不需要删除的文件
        for edav in ${exceptDirArray[@]};do
            [ "${targetLogDir}${edav}" == "${targetLogDir}${item}" ] && continue 2 
        done
 
                #删除文件
        if [ "$isDeleteDirectory" == "0" ] && [ -d ${targetLogDir}${item} ];then
            rm -rf ${targetLogDir}${item}/*
            echo "${targetLogDir}${item}/*"
        else
            rm -rf ${targetLogDir}${item} 
            echo "${targetLogDir}${item}"
        fi
 
                logToFile $item $targetFile
        done
 
        logToFile "[-] Ended cleaning logs !" $targetFile
fi
 
endCleanTime=`date '+%Y-%m-%d %H:%M:%S'`
 
logToFile "[***] Ended time: ${endCleanTime}" $targetFile
 
logToFile "===========================================" $targetFile
logToFile "" $targetFile

添加计划任务,1个小时执行一次:

0 */1 * * * /data/shell/clean_log.sh >>/datadrive/logs/shell/cleanlogs/crontab.log 2>&1


by 雪洁 2019-02-19 09:05:41 488 views
我来说几句

相关文章
?
七乐彩兑奖游戏规则 大庆冠通棋牌麻将免费 黑龙江时时骗局 pc蛋蛋幸运28 牌九至尊手机版 黑龙江时时开奖结果查询结果 冠军走势图北京pk10 吉林时时几点开奖 万汇游戏客服 定位软件下载 极速六计划软件下载 大庆冠通棋牌麻将免费 黑龙江时时骗局 pc蛋蛋幸运28 牌九至尊手机版 黑龙江时时开奖结果查询结果 冠军走势图北京pk10 吉林时时几点开奖 万汇游戏客服 定位软件下载 极速六计划软件下载