起因是这样子的..
我们的测试机预算进行了变更, 如果机器的利用率不够高, 就会被收回作为公用的机器. 利用率的判定是 cpu+mem. 比如说连续多少天, cpu 的使用率 <10% 就收回.
上有政策, 下有对策. 于是写了个专门耗 cpu 的 shell 代码, 很简单, 不过也很方便~~
#! /bin/sh
cd ${0%/*};root=`pwd`
# cpu 的核数根据系统实际情况计算, 跑的进程数和核数成正比
cpu=`cat /proc/cpuinfo | grep "processor" | wc -l`
#如果一个核只跑一个耗 cpu 的程序, 实际大约会有百分之十几的使用率. 如果觉得不够, 直接乘一个常数就好了
((cpu=$cpu*4))
name="kc_bian"
function start()
{
#在当前目录产生 n 个 shell 程序, 每个程序实际上就是不断地进行 + 1 的运算
for i in `seq $cpu`
do
echo -ne "#!/bin/sh
i=0;
while true
do
i=i+1;
usleep 1;
done
" > ${root}/${name}_${i}.sh
chmod +x ${root}/${name}_${i}.sh
#如果没有对应的脚本在跑, 则运行. 即防止重复运行
ps aux | grep "${name}_${i}.sh" | grep -v "grep" >& /dev/null
if [[$? -ne 0]]; then
${root}/${name}_${i}.sh &
fi
done
}
function stop()
{
#直接杀掉所有的脚本进程
for i in `seq $cpu`
{killall "${name}_${i}.sh"
}
}
if [$# != 1]; then
echo "Usage: $0 start|stop"
exit 1
fi
$1 $@
本文链接:https://www.poisonbian.com/post/2028.html 转载需授权!
