ハードディスクの空き容量を毎日確認し、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出力を解析しないことをお勧めします。

GNU coreutilsを使用している場合は、statroot以外のユーザーが使用できる利用可能なブロック数を取得できます。

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 開始;

フィリピン諸島

関連情報