0. 需求和使用场景
后台服务在运行过程中,会产生很多文件,随着时间的推移,文件越来越多,而我们的磁盘空间是有限的。而这些历史文件,对我们不是必要的,就可以清除历史文件,为新文件落地释放出空间。
1. 主要命令
1.1 df -h #显示磁盘空间使用率
1.2 grep #行过滤
1.3 awk #列过滤,目标行是第五行,使用百分比
1.4 cut -d # 求子串
2. shell脚本
执行策略是,当磁盘占用率高于90%时,删除数据,直到占用率低于70%。
#! /bin/sh
DATA_DISK="/dev/sdb" #也可以是挂载的目录
DATA_DIR="/mnt/sdb"
# 当磁盘满时,清理旧文件
i=`df -h | grep $DATA_DISK| awk '{print $5}' | cut -d "%" -f1`
if test "$i" -ge 90
then
echo "disk nearly full"
cd $DATA_DIR
for filedel in `ls | sort -n`
do
rm -f $filedel/* # 执行删除操作
echo $filedel
ii=`df -h | egrep $DATA_DISK| awk '{print $5}' | cut -d "%" -f1`
if test "$ii" -lt 70
then
break
fi
done
else
echo "disk space normal"
fi
3. 加入定时任务
/usr/local/bin/clean.sh 是2中脚本的绝对路径
echo "*/60 * * * * /usr/local/bin/clean.sh " >> /var/spool/cron/root