我想要一个shell脚本,它配置几个东西,然后调用另外两个shell脚本.我希望这两个脚本并行运行,我希望能够获取并打印它们的实时输出.这是我的第一个脚本,它调用另外两个
#!/bin/bash
#CONFIGURE SOME STUFF
$path/instance2_commands.sh
$path/instance1_commands.sh
Run Code Online (Sandbox Code Playgroud)
这两个过程尝试部署两个不同的应用程序,每个过程大约花费5分钟,所以我想并行运行它们并看到它们的实时输出,所以我知道它们在部署任务中的位置.这可能吗?
并行运行这两个脚本可能如下所示:
#!/bin/bash
#CONFIGURE SOME STUFF
$path/instance2_commands.sh >instance2.out 2>&1 &
$path/instance1_commands.sh >instance1.out 2>&1 &
wait
Run Code Online (Sandbox Code Playgroud)
笔记:
wait暂停,直到孩子们,instance1并instance2完成2>&1 在每一行上将错误消息重定向到相关的输出文件& 在行的末尾导致主脚本在分叉后继续运行,从而产生一个子代,该脚本与主脚本的其余部分同时执行该脚本行less instance1.out输出可能会卡在缓冲区中而不是最新的.要解决这个问题,程序必须以行缓冲或非缓冲模式打开stdout.您还可以使用-f或>刷新显示.来自Apache Spark和我博客上的并行处理的文章中的示例D提供了类似的shell脚本,用于计算所有内核上的Pi系列的总和,给出了用于计算一个内核上的和的C程序.这有点超出了问题的范围,但我提到它以防你想看到更深层的例子.
| 归档时间: |
|
| 查看次数: |
2798 次 |
| 最近记录: |