思想:利用命令查到内核个数,使用死循环占用每一个内核资源,消耗cpu总资源
前半部分没有作条件表达式判断,有需求的可以自行添加
#! /bin/bash
#############################################################
# this scripts for cpu usage testing
# eg. cpu_test.sh start 50 #start testing use 50% cpu
# eg. cpu_test.sh stop #stop testing
#############################################################
op=$1
num=$2
mkcsp()
{
touch ./killcpu.c
echo 'int main(){while(1);return 0;}' > killcpu.c
gcc -o out killcpu.c
chmod +x ./out
}
start()
{
cpu_num=$(cat /proc/cpuinfo | grep "physical id" | wc -l)
for i in `seq 1 $(expr $num \* $cpu_num / 100)`
do
./out &
done
}
stop()
{
for i in $( ps -ef | grep './out'| grep -v grep | awk '{print $2}')
do
kill -9 $i
done
rm -rf killcpu.c out
}
main()
{
if [ $op == "start" ]
then
mkcsp
fi
$op
}
main
朋友的脚本 ,我师父啊~
#!/bin/bash
# Destription: testing cpu usage performance
# Example : sh cpu_usage.sh 12
# Remark : cat /proc/cpuinfo | grep "processor"|wc -l #12==>Get the number of processor
# Date : 2015-1-12
# update : 2015-1-12
endless_loop()
{
echo -ne "i=0;
while true
do
i=i+100;
i=100
done" | /bin/bash &
}
if [ $# != 1 ] ; then
echo "USAGE: $0 <CPUs>"
exit 1;
fi
for i in `seq $1`
do
endless_loop
pid_array[$i]=$! ;
done
for i in "${pid_array[@]}"; do
echo 'kill ' $i ';';
done