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