如何解决 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 脚本,直到它检测到信号 SIGSEGV、分段错误?
如何加载 IP 范围列表以将其与 $allowedIps 脚本一起使用?