0

以下は、bash スクリプトを作成する必要がある高レベルのシナリオです。

  • サーバー上のディレクトリ- /sasdata2/SAS-USERS/PBU/
  • 上記のディレクトリのサイズは 8 TB を超えてはなりません
  • サイズが 8 TB を超える場合、サイズを 8 TB に戻すには、「作成/変更」日までに最も古いファイルを削除する必要があります。
  • このメイン ディレクトリにはいくつかのサブディレクトリがありますが、サブディレクトリからは何も削除しないでください。メイン ディレクトリ内のファイルのみを削除できます。

以下は私が使用しているスクリプトですが、while ステートメントで無限ループに陥っています。上記のシナリオのスクリプトを作成するには、あなたの助けが必要です。

while [ "$(du -shb /sasdata2/SAS-USERS/PBU | awk '{print $1}')" -gt 900 ]
do
  find /sasdata2/SAS-USERS/PBU -maxdepth 0 -type f -printf '%T@\t%p\n' | \
  sort -n | head -n 25 | cut -d $'\t' -f 2-  | xargs -d '\n' rm -f
done
4

1 に答える 1

1

while 条件が間違っていると思います。du -b はバイト数を表示しますが、なぜ 900 と比較するのでしょうか?

それに、どうして du でループして任意の 25 個のファイルを削除する必要があるのですか? du で 8 TB を超えるバイト数を計算し、次に ls -ltr を使用してループでファイルを削除し、オーバー バイトに達するまでサイズを合計します。

于 2016-02-16T08:43:25.240 に答える