您正在寻找的是背景壳以及如何杀死它们。
第一步是将这些脚本分叉到后台而不是采购它们。采购他们只是将他们的代码插入到您当前的脚本中。
因此,您可以执行以下操作:
# '&' forks a script into the background
/path/script1.sh &
/path/script2.sh &
/path/script3.sh &
...
# now when you need to make sure that they are all killed
kill $(jobs -p)
的解释source
如果我有 3 个脚本:
脚本.1.sh:
echo "hello world"
脚本.2.sh:
source script.1.sh
source script.1.sh
脚本.3.sh:
echo "hello world"
echo "hello world"
script.3.sh 和 script.2.sh 在功能上没有区别。没有任何。他们都将使用一个 shell 进程(echo 是内置的),并且会一个接一个地调用 echo "hello world" 两次。
脚本4.sh:
script.1.sh &
script.1.sh &
这个不同。它分叉了两个后台脚本(都称为 script.1.sh,尽管它们有不同的进程 ID),每个后台进程都会回显“hello world”然后退出。它看起来是一样的,但在这种情况下,您实际上可以杀死其中一个,因为它们是从您的主脚本异步执行的。