ログを/tmp
に書き込むcronジョブがあります。ディスクの空き容量が1GB未満になったときに、最も古いファイルを自動的に削除したい。
df -ah /tmp
を実行しようとしています。次に、2行目を取得し、cut
を使用してavail
列を取得します。次に、for
ループで、十分な空き容量ができるまで、-mtime
を使用してn日より古いファイルを削除し続けます。
私はおそらくこれを毎日実行されるcronジョブとして設定したいと思います。
Find -mtimeの代わりに、次のようにls-tを実行します。
DIR=/tmp
FREESPACE=1000000
find $DIR -type f | xargs ls -1rt | while read f ; do
if [ `df --output=avail $DIR | tail -1` -ge $FREESPACE ] ; then
break
fi
# rm -f $f
done
rm -f $f
のコメントを解除して、実際に機能させます。
しかし、私は通常、少し違ったやり方をします。 cronログを/ var/logに置き、logrotateのようなものにディスクスペースの管理を処理させます。または、別の方法として、ログを/ tmp/mycronjob/*などの別のサブディレクトリに配置し、一定の日数のログファイルを保持します。ディスク容量の監視ほど柔軟ではありませんが、find /tmp/mycronjob -mtime +30 -exec rm {} \;
も簡単で、より予測可能です。