Bash - 3개의 병렬 무한 while 루프

Bash - 3개의 병렬 무한 while 루프

일부 측정항목을 보내는 3개의 스크립트가 있습니다.

  • script1.sh실행시간은 약 1초
  • script2.sh실행하는데 약 10초 정도 소요
  • script3.sh실행에는 약 2분 정도 소요됩니다.

30초마다 측정항목을 보내고 싶습니다 script1.sh( script2.sh스크립트 script3.sh는 한 번에 하나의 인스턴스에서만 실행할 수 있음). 즉, 3개의 while루프를 병렬화합니다.

#!/bin/sh

while true; do
    ./script1.sh
    sleep 30
done

while true; do
    ./script2.sh
    sleep 20
done

while true; do
    ./script3.sh
done

어떻게 이를 달성할 수 있나요?

답변1

테스트되지는 않았지만 별도의 백그라운드 하위 셸에서 각 루프를 실행해 보세요.

( while true; do ./script1.sh; sleep 30; done ) &
( while true; do ./script2.sh; sleep 20; done ) &
( while true; do ./script3.sh;           done ) &
wait

관련 정보