我有 2 个要运行的程序,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 正在设置一个监听套接字,然后创建一个用户使用的接口(interface)。 programB.py 随后启动,并运行一个进程,通过套接字与 programA.py 对话。运行上述脚本时,programA 启动,等待,programB 启动,然后programA 和B 连接,形成接口(interface),但是programB 没有正确运行其后台进程。
最佳答案
更新的答案
如果您发现我下面的原始答案不起作用,但您仍然想用一个脚本解决您的问题,您可以这样做:
#!/bin/bash
xterm -e "python ProgramA.py" &
sleep 5
python ProgramB.py
原始答案
如果 programA
正在创建一个用户界面,你可能需要它在前台,所以在后台启动 programB
:
{ sleep 5; python programB.py; } &
python ProgramA.py
关于linux - 如何从 bash 脚本启动需要单独终端的 2 个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39452132/