一个shell脚本(.sh),它调用另一个脚本调用的无限循环以在后台运行

时间:2016-09-28 17:26:32

标签: linux bash shell background-process

基本上发生的事情是我在有限的指令集框架上运行(在嵌入式设备上运行)。这个想法非常简单。

我调用一个生成两个文件的脚本:

  • 文件A:start_up - 调用无限循环
  • 文件B:background_while - 重复一个过程

文件A的内容:

#!/bin/sh
sh background_while&

文件B的内容:

#!/bin/sh

while true
do
 #some commands
 sleep 5
done

我想终止在后台调用的这个过程。有人能说明如何使用键盘中断做到最好吗?

1 个答案:

答案 0 :(得分:0)

如果scriptA在调用scriptB作为后台后结束,则无法继续等待键盘中断。因此,不是立即结束scriptA,而是可以使用紧密循环并等待信号,然后使用trap终止后台进程。

类似的东西:

<强> SCRIPTA

#!/bin/bash

function kill_background(){
   kill ${myPid}
}

trap kill_background SIGINT

bash ./scriptB.sh &
myPid=$!

wait

您的scriptB将是相同的。 $!获取最后执行的命令(您的scriptB)的pid,wait使scriptA等待所有后台进程返回。 trap会捕获中断信号并终止你的脚本B.