Bash - 3 个并行的无限 while 循环

Bash - 3 个并行的无限 while 循环

我有 3 个发送一些指标的脚本:

  • script1.sh执行时间约 1 秒
  • script2.sh执行大约需要 10 秒
  • script3.sh执行大约需要 2 分钟

我希望尽快每 30 秒发送一次指标script1.shscript2.shscript3.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

未经测试,但尝试在单独的后台子 shell 中运行每个循环

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

相关内容