1

私は Linux の世界では初心者です。次の質問についてお詫び申し上げます。

フォルダーとそのすべてのサブフォルダーのサイズをチェックするスクリプトを作成しました。サイズが X バイトを超える場合、X 日以上前に変更されたファイルは削除されます。

テスト目的でフォルダ サイズを 0 に設定したため、スクリプトは削除プロセスを実行する必要がありますが、そうではありません。

このスクリプトは期待どおりの動作をしますが、その理由はわかりません。

ご協力いただきありがとうございます。
スクリプトは次のとおりです。

#!/bin/sh

# 100GB SIZE LIMIT
SIZE="0"

# check the current size
CHECK="`du /media/nssvolumes/TEST/MB/`"

if ["$CHECK" -gt "$SIZE"]; then echo "$ACTION"
ACTION="`find /media/nssvolumes/TEST/MB/ -mindepth 0 -maxdepth 3 -mtime +1 -type f  -exec rm -f {} \;`"
else exit
fi
4

1 に答える 1

1

さて、ここにはたくさんのエラーがあります。お使いの OS が Linux であると仮定するとdu、コマンド ラインから実行して、返される値を確認してください。これは数値ではないためです。

  • 2 番目の問題 - の使用に[]はスペースが必要です。
  • また、整数は必要ありません""
  • 値が定義される前に $ACTION を印刷しています。
  • スクリプトに実行するコードがない場合、 exit を呼び出す必要はありません

したがって、修正されたスクリプトは次のとおりです。

#!/bin/sh

# 100GB SIZE LIMIT
SIZE=0
MY_DIR="/media/nssvolumes/TEST/MB/"

# check the current size
CHECK=$(du -bs $MY_DIR|awk '{print $1}')

if [ $CHECK -gt $SIZE ]; then
    echo "ACTION"
    find $MY_DIR -mindepth 0 -maxdepth 3 -mtime +1 -type f -exec rm {} \;    
fi
于 2013-11-11T16:22:09.830 に答える