如何解决 bash 脚本中的错误以将负载加载到 cpu 上?

Posted

技术标签:

【中文标题】如何解决 bash 脚本中的错误以将负载加载到 cpu 上?【英文标题】:How to resolve the error in bash script to put load on cpu? 【发布时间】:2014-01-29 07:43:38 【问题描述】:

我有两个脚本可以使 CPU 达到峰值。

无限循环.bash:

#!/bin/bash
while [ 1 ] ; do
    # Force some computation even if it is useless to actually work the CPU
    echo $((13**99)) 1>/dev/null 2>&1
done

cpu_spike.bash :

#!/bin/bash
# Either use environment variables for NUM_CPU and DURATION, or define them here
for i in `seq $NUM_CPU` : do
    # Put an infinite loop on each CPU
    infinite_loop.bash &
done

# Wait DURATION seconds then stop the loops and quit
sleep $DURATION
killall infinite_loop.bash

脚本之前运行良好。但是现在脚本不能正常工作。它给了我一个错误:

./cpu_spike.bash: line 5: syntax error near unexpected token `infinite_loop.bash'
./cpu_spike.bash: line 5: `    infinite_loop.bash &'

【问题讨论】:

【参考方案1】:

错误在以下行:

for i in `seq $NUM_CPU` : do

您需要使用; 而不是: 来终止for。说:

for i in `seq $NUM_CPU` ; do

: 是一个空命令。


另外,说:

while [ 1 ] ; do command ; done

模拟无限循环是不正确的,而实际上它确实会产生一个。你可能会注意到这句话:

while [ 0 ] ; do command ; done

也会导致无限循环。正确的说法是:

while true ; do command; done

while : ; do command; done

while ((1)); do command; done

有关产生无限循环的其他变体,请参阅this 答案。

【讨论】:

我只是想使用一些无限循环的脚本来加载 cpu 它给了我一个错误:seq: missing operand Try seq --help' 了解更多信息。 ^C` @user3086014 如果你没有设置变量NUM_CPU,你会得到这个错误。 @user3086014 在使用变量NUM_CPU 的任何行之前,将其设置为值。例如,说 NUM_CPU=4 会将值设置为 4。 但之前脚本在没有设置 CPU 值的情况下运行良好

以上是关于如何解决 bash 脚本中的错误以将负载加载到 cpu 上?的主要内容,如果未能解决你的问题,请参考以下文章

如何包含具有相对路径的 bash 脚本? [复制]

如何编写一个运行程序的 bash 脚本,直到它检测到信号 SIGSEGV、分段错误?

Bash 脚本中的 SQL 语法错误

如何加载 IP 范围列表以将其与 $allowedIps 脚本一起使用?

***已解决***无法触摸bash脚本中具有var名称的文件进行循环

如何在我的本地错误日志文件中获取 Redshift 错误?