スケジュールされたタスクを作成する必要があります。毎日ハードディスクの空き容量を確認し、この条件が確認されたらファイルを削除します。利用可能な<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
出力を解析しないことをお勧めします。
GNU coreutilsを使用している場合は、stat
root以外のユーザーが使用できる利用可能なブロック数を取得できます。
stat -f /mountpoint -c '%a'
ブロックサイズは
stat -f /mountpoint -c '%S'
そして、条件は次のように簡潔に書くことができます。
[ `stat -f /mountpoint -c '%a'` -lt 262144 ] && do_your_stuff
(ブロックサイズを4096と仮定すると、1GBは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}")
if [ $vari < 15 ];
それから
./bin/dss 停止
rm -rf tmp/*
rm -rf キャッシュ/*
./bin/dss 開始;
フィリピン諸島