【问题标题】:Run 2 infinite loops parallel in a script, and kill when script stops在脚本中并行运行 2 个无限循环,并在脚本停止时终止
【发布时间】: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 的脚本,以便这些循环在后台或前台同时运行,并且当脚本停止时,循环应该停止。

【问题讨论】:

    标签: bash shell unix scripting ksh


    【解决方案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 随时终止正在运行的脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-30
        • 1970-01-01
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 2013-11-15
        • 1970-01-01
        • 2020-12-21
        相关资源
        最近更新 更多