如何每天检查硬盘上的可用空间,如果低于1GO则删除文件

如何每天检查硬盘上的可用空间,如果低于1GO则删除文件

我需要制定一个计划任务:每天检查硬盘上的可用空间,如果验证了此条件,则删除文件:可用< 1Go。

这是我写的脚本,但似乎不起作用:

var="df -h | sed -n 2p |awk '{ print $4 }' "
if[var<15];then
./bin/dss stop
rm -rf tmp/*
rm -rf caches/*
./bin/dss start
fi

我还没有做 crontab 部分。

答案1

我强烈建议不要解析df输出。

如果您使用statGNU coreutils,则可以通过以下方式获取可用于非 root 的空闲块数:

stat  -f /mountpoint -c '%a'

块大小为

stat -f /mountpoint -c '%S'

并且条件可以简洁地写为:

[ `stat  -f /mountpoint -c '%a'` -lt 262144 ] && do_your_stuff

(假设块大小为 4096,1 GB 为 1073741824 字节 - 即 1073741824/4096)

至于删除(文件,根据问题),最安全的方法可能是:

find /directory -type f -print0 | xargs -0 -r rm -f

甚至更好:

find /directory -type f -delete

使用rm -f /something/*只是自找麻烦。

答案2

尝试下面的代码。

#!/bin/bash
var=$(df -h | sed -n 2p |awk '{ print $4 }')
if [ "${var}" le "15" ]
then
./bin/dss stop
rm -rf tmp/*
rm -rf caches/*
./bin/dss start
fi

答案3

感谢您的投入。

这个解决方案对我有用。

var=$(df -h | sed -n 2p | awk '{print $4}')

vari = $(echo "${var::-1}")

如果 [ $vari < 15 ];

然后

./bin/dss 停止

rm -rf tmp/*

rm -rf 缓存/*

./bin/dss 开始;

相关内容