성공할 때까지 명령 실행
3060 단어 programmingproductivitybash
BASH
패턴:Run
command
every time it fails until it doesn't fail.
command
while [ $? -ne 0 ]; do
command
done
예시
작은 배치로 수십만 개의 레코드를 내보내야 하는 장기 실행 작업이 있었습니다.
처음 작성했을 때 실패 시 다시 시작할 수 있도록 페이지
offset
를 설정할 수 있었습니다.vendor-export --batch-size=250 --offset=20
일주일 동안
production
데이터로 드라런을 수행했습니다. 이를 통해 발생할 수 있는 모든 가능한 데이터 오류에 대한 오류 처리를 구현할 수 있었습니다. 그리고 우리가 통제할 수 있는 어떤 상황으로 인해 실패하지 않고 작업이 완전히 실행될 것이라고 확신했습니다.그러나 네트워크 오류를 완화하기 위해 우리가 할 수 있는 실질적인 방법은 없었습니다. 이러한 경우에 재시도 루프를 구현하는 것은 확실히 가능하지만 다른 중요한 시스템에 영향을 미치므로 이 시스템 내에서는 실용적이지 않습니다. 프로세스가 일회용이라는 점을 감안할 때 작업에 제시된 위험은 정당화될 수 없습니다.
그리고 여기서 패턴이 나오는데...
장기 실행 명령에
resume
옵션을 추가하여 작업이 실패한 위치를 정확히 선택할 수 있었습니다.vendor-export --batch-size=250 --resume
이제 실제로 작업을 실행할 시간이 되면 다음을 호출하십시오.
vendor-export --batch-size=250 --resume
while [ $? -ne 0 ]; do
vendor-export --batch-size=250 --resume
done
그럼 밖에 나가서 하루를 즐기세요...
죄송합니다. 여기에 약간의 문제가 있을 수 있습니다...
이 패턴을 이미 사용해 본 적이 있다면 이미 찾았을 것입니다.
In some terminals,
ctrl-c
won't interrupt the process.
항상 그런 것은 아닙니다. 그러나 때때로 이런 일이 발생할 수 있습니다.
문제가 발생하면 트랩
ctrl-c
하고 종료하면 됩니다.function quit-it() {
exit 0
}
vendor-export --batch-size=250 --resume
while [ $? -ne 0 ]; do
trap quit-it INT
vendor-export --batch-size=250 --resume
done
Reference
이 문제에 관하여(성공할 때까지 명령 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/teamradhq/run-a-command-until-it-succeeds-2okg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)