起因是这样子的..
我们的测试机预算进行了变更, 如果机器的利用率不够高, 就会被收回作为公用的机器. 利用率的判定是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 转载需授权!
