當(dāng)文件夾下的文件數(shù)據(jù)達(dá)到閾值時(shí)執(zhí)行刪除操作,保留固定數(shù)量的文件,以此保證服務(wù)器的存儲(chǔ)健康。
- shell腳本如下
#!/bin/bash
filepath="$1"
echo "${filepath}"
for line in $(ls -lrt ${filepath} |grep log|awk '{print $9}')
do
name[${i}]=$line
let i=${i}+1
done
listsize=${#name[@]}
echo "${listsize}"
n=0
if [ 30 -lt ${listsize} ]; then
echo "日志文件已超過(guò)30個(gè),開(kāi)始執(zhí)行清理"
for line in "${name[@]}"
do
shengxia=$(($listsize-$n))
if [ ${shengxia} -gt 30 ]; then
echo "即將刪除${line}"
$(rm -rf ${filepath}/${line})
fi
n=$(($n+1))
done
fi
- 腳本執(zhí)行,假設(shè)腳本叫做
clean_log.sh,路徑在/root下
sh /root/clean_log.sh /opt/apps/logs
當(dāng)文件夾下個(gè)別文件大小超過(guò)xxG時(shí)執(zhí)行清空命令
- shell腳本如下
#!/bin/bash
filepath="$1"
filesize="$2"
date=`date +%Y-%m-%d/%H:%M:%S`
echo ${date}" 入?yún)?${filepath}"文件大小限制"${filesize}
for line in $(du -sh ${filepath} |grep "G"|awk -F "G" '$1>"${filesize}" {print $2}')
do
echo "文件"${line}"超過(guò)"${filesize}"G開(kāi)始清理"
$(echo "" > $line)
echo "文件清理完畢"
done
- 腳本執(zhí)行
auto_del_log.sh "/opt/apache-tomcat-9.0.33/logs/catalina.out" 30
- crontab 配置每天凌晨1點(diǎn)執(zhí)行,清理兩種數(shù)據(jù):
/opt/nginx/logs/目錄所有超過(guò)100G的文件,``/opt/apache-tomcat-9.0.33/logs/catalina.out"此文件超過(guò)30G時(shí)執(zhí)行清理
0 1 * * * sudo sh /opt/auto_del_log.sh "/opt/nginx/logs/*" 100 >>/opt/auto_del.log
0 1 * * * sudo sh /opt/auto_del_log.sh "/opt/apache-tomcat-9.0.33/logs/catalina.out" 30 >>/opt/auto_del.log