我是这个论坛的新手,也是bash的新手,所以请耐心等待:)。
我想编写一个bash脚本来进行CPU压力测试,同时观察时钟速度。因此,我做了以下几点:
1。)对于CPU压力测试,我创建了一个名为" bernoulli"使用以下代码:
#!/bin/bash
# argument 1: n
function bernoulli()
{
if (( $1 < 3 ))
then
echo 1
else
echo $(( $(bernoulli $(( $1 - 1 ))) + $(bernoulli $(( $1 - 2 ))) ))
fi
}
bernoulli $1
2。)我已经发现通过使用&#34;超时&#34;命令我可以在指定的时间后杀死一个任务。例如,
timeout 30s ./bernoulli 35
开始计算第35个bernoulli数的任务,任务在30秒后被杀死。
3。)我也通过输入
找到了timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo
我可以观看核心的时钟速度(每2秒更新一次)30秒(此时#34;超时30秒&#34;杀死此任务)。
我想要的是什么:我想进行上述压力测试并同时观察时钟速度。换句话说,我会以某种方式运行两个命令
timeout 30s ./bernoulli 35
timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo
&#34;同时&#34;。我希望我能说清楚自己想要达到的目标。任何人都可以帮我解决问题吗?非常感谢每一条评论!
答案 0 :(得分:1)
您可以在专用的shell中运行它们:
timeout 30s bash -c './bernoulli 35 & watch grep \"cpu MHz\" /proc/cpuinfo'
请注意,单&
不是拼写错误。它不是逻辑和,它在后台运行bernoulli
脚本。
答案 1 :(得分:1)
怎么样
timeout 30s ./bernoulli 35 &
timeout 30s watch grep \"cpu MHz\" /proc/cpuinfo
最后的 &
会让命令在后台运行,这样第二个timeout
几乎会在第一个sysbench
之后立即执行。
PS:这是测试现代CPU的相当差的方法。你将只锻炼单核,很可能只是你CPU的有限部分(没有sse等)。编写CPU基准测试并非易事,因此您可能希望使用已有的基准测试。例如,您可以使用sysbench --test=cpu --cpu-max-prime=20000 run
等内容查看focus
。