1

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

现在我真的很想写一个 bash 或其他东西,用不同的参数启动程序几次,并测量时间,直到所有这些都完成。我想我可以通过简单地&在最后使用来启动我的程序 8 次,但是我不知道如何知道它们什么时候停止。

4

4 回答 4

1

You can use wait to wait for background jobs to finish.

#!/bin/sh
program &
program &
wait

will wait until both instances of program exit.

于 2013-09-25T12:52:16.517 回答
0

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

if jobs | wc -l < 8 then  command & 

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

于 2013-09-25T11:25:09.580 回答
0

您可以使用该time命令来测量程序的时间消耗,所以也许像

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

干杯,

于 2013-09-25T11:42:35.830 回答
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命令,例如将输出直接写入终端而不是标准错误。

于 2013-09-25T13:08:09.750 回答