[shell] 定时清理脚本

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

你可能感兴趣的:(效率开发)