• shell脚本之获取CPU使用率


    今天一个同事要测试OJ项目,同时我这边也需要知道他在压测过程中, CPU的使用率怎么样,虽说可以用top实时查看,但是进程太多了,我不需要获取那么多信息,我仅仅只要知道当前压测过程中CPU实时的使用率是多少,然后根据这个使用率,当达到一定的使用率时,我后台调用对应的接口开启服务器,将负载转移到另外一台服务器上。这算是一种动态的负载均衡或者用一句名词来说,这就是弹性伸缩的一种体现。

    将下面cpu.sh 加入crontab中每秒或者每分钟定时执行,同时你还需要建立对应的日志文件,因为有助于你实时查看。

    cpu.sh

    #!/bin/sh
    #
    #脚本功能描述:依据/proc/stat文件获取并计算CPU使用率
    #
    #CPU时间计算公式:CPU_TIME=user+system+nice+idle+iowait+irq+softirq
    #CPU使用率计算公式:cpu_usage=(idle2-idle1)/(cpu2-cpu1)*100
    #默认时间间隔
    TIME_INTERVAL=5
    time=$(date "+%Y-%m-%d %H:%M:%S")
    LAST_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
    LAST_SYS_IDLE=$(echo $LAST_CPU_INFO | awk '{print $4}')
    LAST_TOTAL_CPU_T=$(echo $LAST_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
    sleep ${TIME_INTERVAL}
    NEXT_CPU_INFO=$(cat /proc/stat | grep -w cpu | awk '{print $2,$3,$4,$5,$6,$7,$8}')
    NEXT_SYS_IDLE=$(echo $NEXT_CPU_INFO | awk '{print $4}')
    NEXT_TOTAL_CPU_T=$(echo $NEXT_CPU_INFO | awk '{print $1+$2+$3+$4+$5+$6+$7}')
    
    #系统空闲时间
    SYSTEM_IDLE=`echo ${NEXT_SYS_IDLE} ${LAST_SYS_IDLE} | awk '{print $1-$2}'`
    #CPU总时间
    TOTAL_TIME=`echo ${NEXT_TOTAL_CPU_T} ${LAST_TOTAL_CPU_T} | awk '{print $1-$2}'`
    CPU_USAGE=`echo ${SYSTEM_IDLE} ${TOTAL_TIME} | awk '{printf "%.2f", 100-$1/$2*100}'`
    
    echo "CPU Usage:${CPU_USAGE}%"$time >> /home/youcong/cpu.log
  • 相关阅读:
    Python 面向对象(下)
    Python 面向对象(上)
    《面向对象程序设计概述》 牛咏梅
    lastIndexOf is not a function
    oracle lpad 函数使用介绍
    oracle中length、lengthb、substr、substrb用法小结
    oracle获取字符串长度函数length()和hengthb()
    js获取当前日期时间
    win7系统下查看端口的占用情况以及如何删除端口进程
    IntelliJ IDEA “Finds duplicated code”提示如何关闭
  • 原文地址:https://www.cnblogs.com/youcong/p/10211405.html
Copyright © 2020-2023  润新知