在脚本中并行运行 2 个无限循环,并在脚本停止时终止

Posted

技术标签:

【中文标题】在脚本中并行运行 2 个无限循环,并在脚本停止时终止【英文标题】:Run 2 infinite loops parallel in a script, and kill when script stops 【发布时间】:2019-05-04 15:04:57 【问题描述】:

我正在编写一个脚本,我想在其中并行运行多个无限循环。

我尝试在后台运行,但我希望在脚本停止时终止循环。

脚本示例:

#### SYNC CALL ####
while true            :: Loop 1 ::
do
sync_stat
sleep $SYNC_TIME 
done &

#### TABLESPACE CALL ####  :: Loop 2 ::
while true
do
tablespace_stat
sleep $TABLESPACE_TIME 
done &

想要运行包含 Loop1 和 Loop2 的脚本,以便这些循环在后台或前台同时运行,并且当脚本停止时,循环应该停止。

【问题讨论】:

【参考方案1】:

你可以杀死当前的所有孩子:

pkill -P $$

尝试将此标记到脚本的末尾。

【讨论】:

【参考方案2】:

你有两个选择

选项1:最好在while lopp语句中将一些变量与while&更改其值。

while true
do
x=`sync_stat`
if [ <condition on $x variable> ];
then
break;
fi
sleep $SYNC_TIME 
done &

选项 2:只需使用 bash 命令 bash &lt;script name&gt; 运行脚本并使用 pkill bash 随时终止正在运行的脚本。

【讨论】:

以上是关于在脚本中并行运行 2 个无限循环,并在脚本停止时终止的主要内容,如果未能解决你的问题,请参考以下文章

无限循环(动作脚本 3)

无限循环(动作脚本3)

从并行运行脚本更新值的最佳方法 - Python

如何在无限循环中每 3 分钟回显一次?

当没有更多数据时如何停止无限循环(分页)

在 KeyboardInterrupt 上关闭异步循环 - 运行停止例程