我有两个我想要运行的程序,programA.py和programB.py。当我手动运行它们时,我必须打开单独的终端并键入以下命令:
terminal1
python programA.py
terminal2
python programB.py
然后,这些程序中的每一个都在命令行上输出一些数据。最后,programA.py必须在programB.py启动之前完全启动并等待(programA.py启动并准备好接受数据需要大约2秒)。
如果我在Ubuntu中运行这些程序,我该如何编写一个完成该程序的bash脚本?现在,我有以下内容:
#!/bin/bash
python programA.py
python programB.py
这会启动programA.py,但因为programA.py会等待输入,所以programB.py不会启动,直到你关闭programA.py。如何更改脚本以同时运行这两个程序?
编辑:
使用以下Andreas Neumann提供的建议,将脚本更改为以下内容成功启动了两个程序:
#!/bin/bash
python programA.py &
sleep 5
python programB.py &
但是,当两个程序都启动时,代码就无法正常工作。基本上,programA.py正在设置监听套接字,然后创建用户使用的接口。然后programB.py启动,并运行一个进程,通过套接字与programA.py对话。运行上面的脚本时,programA启动,等待,programB启动,然后programA和B连接,形成接口,但programB没有正确运行其后台进程。
答案 0 :(得分:1)
#!/bin/bash
python programA.py &
sleep 5 # give enough time to start
python programB.py &
答案 1 :(得分:1)
更新了答案
如果您发现下面我的原始答案不起作用,但您仍希望使用单个脚本解决问题,则可以执行以下操作:
#!/bin/bash
xterm -e "python ProgramA.py" &
sleep 5
python ProgramB.py
原始答案
如果programA
正在创建用户界面,您可能需要将其置于前台,因此请在后台启动programB
:
{ sleep 5; python programB.py; } &
python ProgramA.py