停止时间并使用bash启动多个程序

时间:2013-09-25 11:21:27

标签: linux multithreading bash

我正在尝试测量一个程序在我同时启动8次时需要完成的时间。

现在我真的想写一个bash或者用不同参数多次启动程序的东西,并测量所有这些参数完成之前的时间。 我想我会设法在最后使用&启动我的程序8次,但后来我不知道怎么知道他们什么时候停止。

4 个答案:

答案 0 :(得分:1)

您可以使用wait等待后台作业完成。

#!/bin/sh
program &
program &
wait

将等到program的两个实例退出。

答案 1 :(得分:0)

使用jobs查看仍在运行的内容,如果您需要8,则可以

if jobs | wc -l < 8 then  command & 

不工作的代码,但你明白了

答案 2 :(得分:0)

您可以使用time命令来衡量程序的时间消耗,所以可能类似

#!/bin/bash
time yourprogram withoneargument
time yourprogram with three arguments
...etc

干杯,

答案 3 :(得分:0)

先生。 Bystrup提供time命令,该命令将执行程序。 Politowski先生和user2814958提供&运算符,它将在后台运行程序,允许您同时启动它们。如果你把它们组合在一起,你就会大部分都在那里,除了来自time的输出对于不同的命令将是混乱的,并且很难分辨哪个输出与哪个命令有关。

解决此问题的一种方法是将输出分流到不同的文件中:

/usr/bin/time program1 2>/tmp/program1.time &
/usr/bin/time program2 2>/tmp/program2.time &

请注意,我正在将标准错误(文件描述符2)重定向到文件中; time将其输出写入标准错误而不是标准输出。另请注意我使用time的完整路径。有些shell有一个内置的time命令,其行为不同,例如直接将输出写入终端而不是标准错误。