不需要安装任何额外的软件包,你的老牌shell就能独自完成。
这个单行本将100%加载你的四个内核1:
for i in 1 2 3 4; do while : ; do : ; done & done
工作原理很简单,它开始了四个无休止的循环。每个循环都在重复空指令(:
)。每个循环都能100%加载一个CPU内核。
如果你使用的是bash
,ksh93
和其他支持范围的shell,(即不是dash
或更早的ksh
),你可以使用这个非移植语法:
for i in {1..4}; do ...
for i in 1 2 3 4; do kill %$i; done
如果与4
不同,用你想加载的CPU数量代替4
。假设你在启动这些循环时没有后台工作已经运行,你可以用这个命令停止负载生成:
# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
(
pids=""
cpus=${1:-1}
seconds=${2:-60}
echo loading $cpus CPUs for $seconds seconds
trap 'for p in $pids; do kill $p; done' 0
for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
sleep $seconds
)
}
回应@underscore_d的评论,这里有一个增强版,可以简化很多停止负载的操作,并且允许指定一个超时(默认60秒)。这个shell函数至少在bash
和ksh
下有效。
&001
&001
1注意,当CPU每个内核支持一个以上的线程(超线程)时,操作系统将把负载分配给所有的虚拟CPU。在这种情况下,负载行为取决于实现(每个线程可能被报告为100%忙或不忙)。