Linux中利用shell脚本提升cpu使用率

使用背景:

  因新申请下来的服务器暂时没有部署任何应用导致cpu使用率很低, 那资源组那边给出两个方案, 1.要不把服务器用起来 2服务器进行降配

  降配是不可能降配的,后面正式用起来去升配就很麻烦了

使用说明:

  这个脚本主要是针对多核服务器进行使用,前提你想让你服务器的cpu使用率达到80%, 50%这样的

主要命令讲解:

  查询服务器的核数命令(当然我演示是用我的自己服务器是一核的,不要介意)

  cat /proc/cpuinfo |grep "processor" | wc -l

  当然有些文章会执行cat /proc/cpuinfo | grep "physical id" | wc -l  但我试了下查询不出来我的核数

[root@iZuf63rpbv7l8ahkbslwi6Z yycp]# cat /proc/cpuinfo |grep "processor" | wc -l
1
[root@iZuf63rpbv7l8ahkbslwi6Z yycp]# 

  删除进程

  pkill -9 dd

shell脚本:

#!/bin/bash
read -p "请输入一个数字(0:停止;8:CPU80%;10:CPU100%):" num
 
if [ $num -eq 8 ]; then
    pkill -9 dd
    #仅适用与多核
    for i in $(seq 1 $(cat /proc/cpuinfo |grep "processor" | wc -l | awk '{print $1-1}')); do
        dd if=/dev/zero of=/dev/null &
    done
elif [ $num -eq 10 ]; then
    pkill -9 dd
    for i in $(seq 1 $(cat /proc/cpuinfo |grep "processor" | wc -l)); do
        dd if=/dev/zero of=/dev/null &
    done
elif [ $num -eq 0 ]; then
    pkill -9 dd
else
    echo "无效的输入"
fi

执行脚本:

  

[root@iZuf63rpbv7l8ahkbslwi6Z yycp]# sh cpu.sh 
请输入一个数字(0:停止;8:CPU80%;10:CPU100%):

这里说下我演示服务器为一核,我的选项只有0停止和10升到100%, 因为我选8相当于减掉一核等于0核(意味着如果要达到50%可以修改

wk '{print $1-1}' 这里的参数 -1 -2 -3都行看你有几核或做除法

)

[root@iZuf63rpbv7l8ahkbslwi6Z yycp]# sh cpu.sh 
请输入一个数字(0:停止;8:CPU80%;10:CPU100%):10
[root@iZuf63rpbv7l8ahkbslwi6Z yycp]# top
top - 17:46:42 up 8 days, 32 min,  1 user,  load average: 0.37, 0.08, 0.03
Tasks: 235 total,   2 running, 231 sleeping,   2 stopped,   0 zombie
%Cpu(s): 34.7 us, 65.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1737.2 total,    465.5 free,    168.3 used,   1103.5 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1480.3 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                               
 974053 root      20   0  220380    792    720 R  99.7   0.0   0:11.25 dd             

执行top命令可以看到 %cpu达到了99.7,进程为dd

[root@iZuf63rpbv7l8ahkbslwi6Z yycp]# sh cpu.sh 
请输入一个数字(0:停止;8:CPU80%;10:CPU100%):0
[root@iZuf63rpbv7l8ahkbslwi6Z yycp]# top
top - 17:48:05 up 8 days, 33 min,  1 user,  load average: 4.85, 1.68, 0.60
Tasks: 238 total,   2 running, 233 sleeping,   3 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1737.2 total,    462.8 free,    170.9 used,   1103.5 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1477.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                               
      1 root      20   0  104080  10036   7160 S   0.0   0.6   2:09.15 systemd                                                                               
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.08 kthreadd                                                                              
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp    

再次执行选项0可以看到top中没有dd进程了(被杀掉了)

  

posted @ 2024-01-18 17:51  马革皮  阅读(616)  评论(0编辑  收藏  举报