shell脚本之根据磁盘剩余大小去删除日志

#!/usr/bin/env bash

#======定义变量---start=========
#定义要清理的目录,注意每个目录用双引号引起来,并且以空格分割
logsPathArray=("/opt/logs" "/home")
#定义磁盘容量超过百分之多少才会去清理
diskPercent=91
#======定义变量---end=========


#判断linux系统是否有大约指定百分比容量的文件系统
CheckFilesystem(){
        #看是否有大于89%的文件系统
        dfList=`df -hT |awk '{if (NR>1){print $6}}' |sed 's/.$//' |awk '$NF>"'"$diskPercent"'"{print $NF}'`
        dfListLength=`echo ${#dfList}`
}


#删除类似.log的日志文件
DeleteLogs(){
        #遍历文件夹数组,删除指定目录的文件类型,注意文件类型是写死的。
        for i in ${logsPathArray[@]}
        do
                #删除指定的前缀和后缀的日志文件
                find $i -name "access.20*.log" |xargs rm -rf
                find $i -name "host-manager.20*.log" |xargs rm -rf
                find $i -name "gc-*[0-9].log" |xargs rm -rf
                find $i -name "host-manager.20*.log" |xargs rm -rf
                find $i -name "catalina-20*.out" |xargs rm -rf
                #找出特殊的超大文件。文件保留不要删除,使用echo置空它。(xargs sed -i '1,$d' {})是清空,慎用
                find $i -name "*.log" |xargs du -sh |grep -E "[1-9].[0-9]G" |awk '{print $2}' |xargs sed -i '1,$d' {}
        done
}


Main(){
        CheckFilesystem
        if [ $dfListLength -gt 0 ];then
                DeleteLogs
        else
                echo "没有大约${diskPercent}%的文件系统被清理"
        fi
}

Main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇洒哥Kahn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值