Bash - 3つの並列無限whileループ

Bash - 3つの並列無限whileループ

いくつかの指標を送信する3つのスクリプトがあります。

  • script1.sh実行時間は約1秒
  • script2.sh実行するのに約10秒かかります
  • script3.sh実行には約2分かかります。

30秒ごとに指標を送信したいscript1.shscript2.shスクリプトscript3.shは一度に1つのインスタンスでのみ実行できます)。つまり、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

関連情報