本文已参与「新人创作礼」活动,一起开启掘金创作之路。
`#!/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 "gc-[0-9].log" |xargs rm -rf find i -name "catalina-20.out" |xargs rm -rf #找出特殊的超大文件。文件保留不要删除,使用echo置空它。(xargs sed -i '1,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 [ {diskPercent}%的文件系统被清理" fi }
Main`