并行化bash脚本和条件中断

我已经看到很多关于并行化 bash 脚本的问题,但到目前为止我还没有找到一个能回答我的问题的问题。

我有一个 bash 脚本,它按顺序运行两个 python 脚本(python 脚本的事实并不重要,它可以是任何其他 bash 作业):

python script_1.py
python script_2.py

现在,假设 script_1.py 需要一定的(未知)时间才能完成,而 script_2.py 有一个无限循环。

我想并行运行这两个脚本,当 script_1.py 完成执行时,我也想杀死 script_2.py。

请注意,我对在 python 脚本中执行此操作不感兴趣,但我有兴趣从 bash 的角度执行此操作。

我的想法是创建 2 个“子”bash 脚本:bash_1.sh 和 bash_2.sh,并从如下所示的 main_bash.sh 脚本并行运行它们:

bash_1.sh & bash_2.sh

每个 bash_i.sh 作业运行一个 script_i.py 脚本。

但是,一旦第一个无限循环完成,这不会终止第二个无限循环。有没有办法做到这一点,添加某种条件,当另一个脚本完成时杀死一个脚本?

作为附加(不太重要)的一点,我对监视第一个脚本的终端输出感兴趣,但对监视第二个脚本的终端输出不感兴趣。

回答

如果你的脚本需要在该序列开始,你可以waitbash_1完成:

bash_1 &
b1=$!
bash_2 &
b2=$!
wait $b1
kill $b2


以上是并行化bash脚本和条件中断的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>