실패하더라도 N초마다 bash 스크립트를 계속 실행하는 방법은 무엇입니까?

실패하더라도 N초마다 bash 스크립트를 계속 실행하는 방법은 무엇입니까?

N초마다 bash 스크립트를 실행하고 싶고, 실패하더라도 while충돌 없이 루프가 계속되기를 원합니다.

다음 솔루션을 사용하고 있습니다N 초마다 bash 스크립트를 반복적으로 실행하는 방법은 무엇입니까?:

10시간 동안의 동시 스크립트가 완료되었습니다.

누군가 다음과 같이 말했습니다. This is the canonical way to repeat a command as long as it doesn't fail..내 스크립트가 실패하면 while 루프가 종료되는 것을 관찰할 것입니다.


try...catch스크립트에 메커니즘을 적용하고 while스크립트가 실패하더라도 루프를 계속할 수 있는 방법이 있습니까 ?

답변1

POSIX 셸에서 무한 루프를 작성하는 일반적인 방법 은 명령을 조건으로 while사용하는 것입니다 .true

while true ; do
  script
  sleep 10
done

답변2

루프의 조건과 작업을 바꾸고 백그라운드에서 실행할 수 while있습니다 script.

N=10
while sleep $N
do
  script &
done

이로 인해 루프 메커니즘은 script성공이나 실패에 신경 쓰지 않게 됩니다.

이는 또한 귀하의 예보다 종료하기가 더 쉽습니다. 프로세스 를 식별하고 종료하십시오 sleep. 이로 인해 sleep오류 코드가 반환되어 while루프가 종료됩니다.

또한 요청한 정확한 간격에 가깝게 스크립트를 실행할 수 있습니다. 원래 예제는 script매초마다 10개씩 실행 N+X되며 N실행하는 데 걸리는 시간도 달라집니다 X. script이 예는 매초마다 더 가까워야 합니다 N.

완료하는 데 몇 초 script이상 걸리므 로 여러 인스턴스가 동시에 실행될 수 있는 상황을 예상하고 대비해야 합니다 .N

관련 정보