如何从bash脚本并行运行多个程序?

2024-04-24 00:01:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个同时运行多个程序的.sh文件

我试过这个

prog1 
prog2

但它运行prog1,然后等待prog1结束,然后启动prog2

那么我如何并行运行它们呢


Tags: 文件程序shprog1prog2
3条回答

如果您希望能够使用ctrl-c轻松运行和杀死多个进程,这是我最喜欢的方法:在(…)子shell中生成多个后台进程,并捕获SIGINT以执行kill 0,这将杀死子shell组中生成的所有进程:

(trap 'kill 0' SIGINT; prog1 & prog2 & prog3)

您可以有复杂的流程执行结构,所有操作都将通过一个ctrl-c来结束(只需确保最后一个流程在前台运行,即不要在prog1.3之后包含&):

(trap 'kill 0' SIGINT; prog1.1 && prog1.2 & (prog2.1 | prog2.2 || prog2.3) & prog1.3)

那么:

prog1 & prog2 && fg

这将:

  1. 开始prog1
  2. 将其发送到后台,但继续打印其输出
  3. 启动prog2,并将其保持在前台,这样您就可以用ctrl-c关闭它
  4. 关闭prog2时,将返回prog1前台,因此也可以使用ctrl-c关闭它

要并行运行多个程序,请执行以下操作:

prog1 &
prog2 &

如果需要脚本等待程序完成,可以添加:

wait

在您希望脚本等待它们的位置

相关问题 更多 >