linux - 如何从 bash 脚本启动需要单独终端的 2 个程序?

标签 linux bash

我有 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/

相关文章:

bash - 从名称获取 bash 函数路径

git - Cygwin 的 Git 命令正在从命令中删除大括号。我该如何防止这种情况?

linux - 给定端口号,如何使用 netstat 查找连接详细信息?

linux - 通过ssh2、scp发送文件

c++ - 在 Linux 上编译外部库

linux - 在检测到中断时向用户空间发送异步事件

bash - 将 bash while 循环限制为 10 次重试

regex - AWK 为逗号和引号设置多个分隔符

linux - flock(1) 无法释放锁

bash - 使程序在文件更改时重新加载已打开的文件