我希望这个问题没有被问到太多次,但我无法在谷歌上找到答案(我不知道如何指定它)。
有人知道如何在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
提前谢谢
答案 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!"