我来教你如何将cpu使用率up起来(shell脚本[含注释])


这个脚本是为了逃过一些资源检测的,当一些机器当前使用率偏低,会被客户要求收回,那咋办呢?使用下面的脚本,就可以留住你的机器了
假设要求cpu使用率不能低于35%
使用方法:bash up_up_up.sh 35
注意自己实际环境的情况,别把cpu当烧烤架,那味道,可香了

#!/bin/bash
# 获取本脚本当前所在路径
PWD=$(cd $(dirname $0); pwd)
# 获取当前cpu使用率
cpu_using=$(top -n 3 | awk '/%Cpu/ {print $2}' | tail -1)
# 通过$1位置变量,将需要达到的cpu使用率参数传给cpu_used
cpu_used=$1

# 判断需要达到的cpu使用率是否小于当前cpu使用率
# 如果需要达到的cpu使用率小于当前cpu使用率,则退出脚本,返回状态码为0
# 如果需要达到的cpu使用率大于当前cpu使用率,则定义cpu_status的值为cpu使用率和需要达到的cpu使用率的差值
if [[ "${cpu_used}" -le "${cpu_using}" ]];then
  exit 0
else
  cpu_status=$(echo "$(( ${cpu_using}-${cpu_used} ))")
fi

# 判断脚本执行的时候是否有传参
if [ $# != 1 ]
then
  printf "\e[0;34mUSAGE: $0 30\e[0m\n"
  exit 1
fi

# cpu_proc=$(grep 'processor' /proc/cpuinfo | uniq | wc -l)
# cpu_using_count=$(awk "BEGIN {print ${cpu_proc} * ${cpu_using} / 100}")
# cpu_userd_count=$(awk "BEGIN {print ${cpu_proc} * ${cpu_used} / 100}")
# cpu_num_count=$(awk "BEGIN {print ${cpu_using_count} - ${cpu_userd_count}}")
# cpu_num=${cpu_num_count##*-}

# 判断cpu_status的值是否是单数
# 如果cpu_status的值是单数,则cpu_num的值为1
# 如果cpu_status的值是双数,则cpu_num的值为cpu_status的值的正整数的第一位
if [[ "${cpu_status}" =~ ^-?[[:digit:]]{1}$ ]];then
  cpu_num=1
else
  num=${cpu_status##*-}
  cpu_num=${num:0:1}
fi

# 开启cpu_num的个数的死循环进程,并且记录下来这个进程的pid号
for i in $(seq ${cpu_num})
do
  echo -ne "
  i=0;
while true
do
  i=i+1;
done" | /bin/sh &
  echo "kill $!" >> ${PWD}/kill_cpu_up.log 2>&1
  pid_array[${i}]=$!
done