## 20141017
## run as a cron script every 5 minutes
## NB: Filesystem mounted on /u01 periodically exceeds 80%
##
#!/bin/bash
fs=u01
function deletion() {
pushd ~ > /dev/null
largedir=`du -k /u01 | sort -rn | head -n2 | awk '{print $2}' | grep -v "^/u01$"`
echo $largedir
rm -rf $largedir
popd > /dev/null
}
usage=`df -h | awk '$1 ~/dev\/sdc1/' | awk '{print $5}' | sed 's/%//g'`
while [ $usage -gt "40" ]
do
echo "Filesystem $fs has currently reached $usage% usage."
echo "Deleting files.."
deletion
done
假设FS使用率为41%,largedir
的大小为13G。如果我允许删除不间断运行,那么FS使用率可能会下降到1%;当我运行deletion()
时,我希望该程序能够同时检查使用情况,一旦使用率降至40%以下,它就必须退出。
我的做法是对的吗?或者以某种方式从最小的删除目录更容易 - >最大尺寸是通过尾巴而不是头部?
答案 0 :(得分:0)
在while循环中,您可能必须在运行删除后重新计算使用情况。
如果您不想一次删除整个目录并冒险将您降回1%,那么查找/删除单个文件,并在每次删除后检查df是否低于40%。
否则,我认为可能没问题。