执行同步命令并在完成后退出

时间:2016-07-28 11:46:26

标签: bash parallel-processing

我希望这个问题没有被问到太多次,但我无法在谷歌上找到答案(我不知道如何指定它)。

有人知道如何在bash中执行两个并行命令,但是当一个完成时,我希望另一个完成吗?

例如,我有两个不同的python脚本:

  • while 1: pass:loop.py
  • print(42):print.py

我想做python3 loop.py ** python3 print.py之类的事情。这两个脚本必须并行运行,当打印完成时,循环将自动结束。

我对该命令的使用将是:

tcpdump -i any -w out.trace ** python3 network_script.py

提前谢谢

2 个答案:

答案 0 :(得分:1)

你想要的是

tcpdump ... & pid=$!
python3 network_script.py
kill $pid

在后台运行第一个脚本,然后启动第二个脚本。当第二个脚本结束时,杀掉第一个脚本。

答案 1 :(得分:0)

不是最干净的解决方案,但您可以在后台启动流程,其中包含&,然后wait,以便完成这些流程。

这些过程中的每一个都必须在完成后杀死所有其他过程。

看起来像这样:

(python loop.py && killall Python) &
(python print.py && killall Python) &
wait
echo "Done with at least one!"