여러 파일이 포함된 디렉터리에서 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"