我目前正在尝试测量一个程序在我同时启动 8 次时需要完成的时间。
现在我真的很想写一个 bash 或其他东西,用不同的参数启动程序几次,并测量时间,直到所有这些都完成。我想我可以通过简单地&
在最后使用来启动我的程序 8 次,但是我不知道如何知道它们什么时候停止。
我目前正在尝试测量一个程序在我同时启动 8 次时需要完成的时间。
现在我真的很想写一个 bash 或其他东西,用不同的参数启动程序几次,并测量时间,直到所有这些都完成。我想我可以通过简单地&
在最后使用来启动我的程序 8 次,但是我不知道如何知道它们什么时候停止。
You can use wait
to wait for background jobs to finish.
#!/bin/sh
program &
program &
wait
will wait until both instances of program
exit.
用于jobs
查看仍在运行的内容,如果您需要 8 个,则可以执行
if jobs | wc -l < 8 then command &
不工作的代码,但你明白了
您可以使用该time
命令来测量程序的时间消耗,所以也许像
#!/bin/bash
time yourprogram withoneargument
time yourprogram with three arguments
...etc
干杯,
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
命令,例如将输出直接写入终端而不是标准错误。