繁体   English   中英

如何启动2个需要从bash脚本分离终端的程序?

[英]How to start 2 programs that need separate terminals from a bash script?

我有两个要运行的程序:programA.py和programB.py。 手动运行它们时,我必须打开单独的终端并键入以下命令:

terminal1
python programA.py

terminal2
python programB.py

然后,每个程序都在命令行上输出一些数据。 最后,必须完全启动programA.py,并等待programB.py可以启动(需要大约2秒钟的时间,programA.py才能启动并准备接受数据)。

如果我在Ubuntu中运行这些程序,我如何编写实现该目标的bash脚本? 现在,我有以下内容:

#!/bin/bash
python programA.py
python programB.py

这将启动programA.py,但是因为programA.py然后等待输入,所以直到您关闭programA.py为止,programB.py才启动。 如何更改脚本以同时运行两个程序?

编辑:

使用下面的Andreas Neumann给出的建议,将脚本更改为以下内容可以成功启动两个程序:

#!/bin/bash
python programA.py &
sleep 5
python programB.py &

但是,当两个程序都启动时,代码将无法正常工作。 基本上,programA.py会设置一个侦听套接字,然后创建用户使用的接口。 然后,programB.py随后启动,并运行一个进程,并通过套接字与programA.py进行通信。 当运行上述脚本时,programA启动,等待,programB启动,然后programA和B连接形成接口,但是programB没有正确运行其后台进程。

#!/bin/bash
python programA.py &
sleep 5 # give enough time to start
python programB.py &

更新的答案

如果您发现我下面的原始答案不起作用,但仍然想用一个脚本解决问题,则可以执行以下操作:

#!/bin/bash
xterm -e "python ProgramA.py" &
sleep 5
python ProgramB.py

原始答案

如果programA正在创建用户界面,则可能需要将其置于前台,因此programB在后台启动programB

{ sleep 5; python programB.py; } &
python ProgramA.py 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM