shell脚本之获取CPU使用率
2019-01-02 22:19
555 查看
今天一个同事要测试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
相关文章推荐
- 使用shell脚本获取虚拟机中cpu使用率(读/proc/statc)
- shell脚本获取CPU使用率
- 使用shell脚本获取虚拟机中cpu使用率(读/proc/stat)
- 获取所有本地用户power shell 脚本
- shell脚本获取时间、crontab、日志重定向到文件
- Shell脚本中获取select值
- shell脚本获取配置文件中的内容
- shell 脚本统计文件梳理及获取磁盘占有率
- shell脚本中如何获取命令的参数(2) ----处理命令参数
- 使用SHELL脚本,sed截取获取文件中指定字符串
- 【脚本】Shell 获取全路径的目录和文件名*
- 获取服务器信息的Shell脚本分享(ubuntu、centos测试通过)
- shell脚本获取网页快照并生成缩略图
- Ubuntu下获取系统信息shell脚本
- shell脚本如何获取当前时间
- Windows下bat脚本获取时间和Linux下shell命令获取时间
- linux c程序中获取shell脚本输出
- linux C程序中获取shell脚本输出
- shell获取当前执行脚本的路径
- Linux下查看所有用户(shell脚本获取)