#!/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
09-04
70