我需要制定一个计划任务:每天检查硬盘上的可用空间,如果验证了此条件,则删除文件:可用< 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
输出。
如果您使用stat
GNU 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 开始;
菲