複数のファイルを含むディレクトリでrcloneを実行するbashスクリプトを実行しています。ただし、bashコマンドは完了せず、重複した警告が表示されます。以下に私のbashファイルを見つけることができます。
#!/bin/bash
echo "starting f2f perf tests"
source="/datadrive/0B-2500Files"
target="/mnt/perftest"
cd "${source}"
#ls /datadrive/Empty-Dir-Structure-250K | xargs -n1 -P4 -I% rsync -Pa % /datadrive/Empty-Dir-Structure-250K
rclone sync {source} {target} --transfers 256 --checkers 256 -v --log-file=/tmp/sync.log
time /home/marcelomo/f2f-small-files-one-vm.sh
echo "rclone is done"
エラー出力は次のとおりです。
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
/bin/bash: warning: shell level (1000) too high, resetting to 1
...
この警告は繰り返しのみ表示されます。私のbashスクリプトは自分自身を呼び出していますか?ソースとターゲットのディレクトリが存在することを確認しました。また、rsyncを使用してファイルを移動できますが、rcloneを使用している場合にのみこの重複警告が表示されます。
私が最終的に望むのは、--transfersパラメータを使用してbashスクリプトを実行して並列転送数を変更することによって、さまざまなファイルサイズのrcloneに費やされた時間を記録することです。
どんなアドバイスも本当にありがとうございます。ありがとうございます!
答え1
このtime
キーワードは、特定のユーティリティを実行して実行に費やした時間を報告します。
スクリプト内でスクリプト自体を呼び出すので、スクリプトtime
を実行するには、スクリプトを呼び出して再度スクリプトを呼び出す方法でメモリが使い果たされるまで続きます。time
time
つまり、無限再帰スクリプトを正常に生成したのです。
この問題を解決するには、コールライン全体を削除し、コマンドラインtime
からスクリプトを呼び出すか、スクリプトが呼び出される場所からcronスケジュールを呼び出すときにのみ使用してください。time
また、呼び出しにおよびを使用しました{source}
。これらはおそらくそれぞれとで読むべきです。{target}
rclone
"$source"
"$target"