【问题标题】:How to join multiple processes in shell?如何在shell中加入多个进程?
【发布时间】:2011-02-26 12:36:22
【问题描述】:
所以我制作了一个小的 c++ 二进制文件来连接以在服务器上执行命令以对其进行压力测试,因此我开始编写以下 shell 脚本:
#!/bin/bash
for (( i = 0 ; i <= 15; i++ ))
do
./mycppbinary test 1 &
done
现在,我也碰巧想计算所有进程执行所需的时间。我想我必须对每个进程执行时间命令?
是否可以像线程一样加入这些进程?
【问题讨论】:
标签:
linux
shell
scripting
process
【解决方案1】:
你不加入他们,你wait他们。至少在 bash 中,可能还有其他具有作业控制的 shell。
【解决方案2】:
您可以使用 bash fg 命令将最后一个后台进程带回前台。在另一个循环中执行以捕获所有内容,尽管有些可能在此之前完成,导致您收到关于没有此类过程的错误。您没有加入进程,它们不是线程,它们每个都有自己的 pid 和唯一的内存空间。
【解决方案3】:
1st,使脚本的最后一个与其所有的孩子一样
您提出的脚本将在进程完成之前终止,因为您是在后台启动它们。如果您不希望这种情况发生,您可以根据需要发送尽可能多的waits(如 Keith 建议的那样)。
第二次,给脚本计时
然后,您可以为您的脚本计时,这将按照您的要求为您提供总执行时间。
【解决方案4】:
您可以为您的 shell 脚本计时,这将为您提供总执行时间。