쉘 스크립트로 재시도
4198 단어 ShellScript재시도
재시도 처리란?
항상 성공이라고는 할 수 없는 처리에 대해서, 시간 간격을 열어 다시 한번 같은 처리를 실행하는 시도. 시간을 어긋나면 성공할 수 있는 처리에 대해 수행된다.
재시도 처리가 필요한 예는 다음과 같습니다.
실제 이용 사례
bq load
를 병렬 처리했지만 RateLimited에 걸리므로 시간이 지남에 따라 재 시도하고 싶습니다 코드
콘솔이 색상 제어를 지원하는 경우,
#!/bin/sh
set -eu
ESC=$(printf '\033')
TAB=$(printf '\011')
RED="${ESC}[31m"
GREEN="${ESC}[32m"
YELLOW="${ESC}[33m"
NORMAL="${ESC}[0m"
retryable() {
(
i=0 MAX_RETRY=10
COMMAND="$@"
while [ $((i+=1)) -le $MAX_RETRY ]; do
eval "$COMMAND" && printf "[${GREEN}success${NORMAL} $i/$MAX_RETRY]${TAB}$COMMAND\n" && break
printf "[${RED}retry${NORMAL} $i/$MAX_RETRY]${TAB}$COMMAND\n"
sleep 1
done
return $?
)
}
# 使い方(retryable の後ろにコマンドを書く)
retryable printf "hello world"
표시 예
#!/bin/sh
set -eu
ESC=$(printf '\033')
TAB=$(printf '\011')
RED="${ESC}[31m"
GREEN="${ESC}[32m"
YELLOW="${ESC}[33m"
NORMAL="${ESC}[0m"
retryable() {
(
i=0 MAX_RETRY=10
COMMAND="$@"
while [ $((i+=1)) -le $MAX_RETRY ]; do
eval "$COMMAND" && printf "[${GREEN}success${NORMAL} $i/$MAX_RETRY]${TAB}$COMMAND\n" && break
printf "[${RED}retry${NORMAL} $i/$MAX_RETRY]${TAB}$COMMAND\n"
sleep 1
done
return $?
)
}
# 使い方(retryable の後ろにコマンドを書く)
retryable printf "hello world"
Reference
이 문제에 관하여(쉘 스크립트로 재시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tamanobi/items/e69a9f802c6be9e1fd0c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)