x 시간이 지날 때까지 Python 명령을 반복합니다.

x 시간이 지날 때까지 Python 명령을 반복합니다.

다음과 같은 문제가 있습니다. 어떤 이유로 인해 Python 스크립트가 실행 초기 단계에서 100번 중 99번 충돌합니다. 그런데 제가 프로그램을 직접 작성해본 적이 없어서 어떻게 고쳐야 할지 모르겠습니다. 그래서 성공적으로 완료될 때까지 다시 시작 스크립트를 반복할 수 있을 것이라고 생각했습니다.

이를 수행할 수 있는 방법이 있습니까? x초마다 프로그램을 자동으로 다시 시작하는 다양한 방법을 보았지만 프로그램이 x분 이상 실행되지 않은 경우에만 프로그램을 다시 시작하고 싶습니다. 따라서 x분 이상 실행되고 종료되면 다시 시작하지 말고(성공적으로 완료되므로) x분 내에 충돌이 발생하면 다시 시작합니다(성공적으로 실행되지 않으므로).

가능합니까?

나에게 있어 x는 약 30분입니다. 알고리즘이 충돌할 때까지 한동안 실행될 수 있고, 성공적으로 실행되면 실행하는 데 2시간 이상이 걸리기 때문입니다.

답변1

그래서 성공적으로 완료될 때까지 다시 시작 스크립트를 반복할 수 있을 것이라고 생각했습니다.

그것은 간단합니다. 다음은 성공할 때까지 명령을 1초에 한 번씩 반복합니다.

until python myscript.py; do
  sleep 1
done

x초마다 프로그램을 자동으로 다시 시작하는 다양한 방법을 보았지만 프로그램이 x분 이상 실행되지 않은 경우에만 프로그램을 다시 시작하고 싶습니다.

약간 까다롭지만 timeout명령(명령의 일부 coreutils이므로 반드시 있어야 함)을 사용하여 이전 스크립트를 래핑할 수 있습니다. 다음은 최대 5분까지 1초마다 스크립트를 다시 시도합니다.

timeout 5m sh -c 'until python myscript.py; do sleep 1; done'

관련 정보