shell 获取cpu使用率

shell脚本获取主机每颗CPU使用率的方法。

#!/bin/bash
interval=3
cpu_num=`cat /proc/stat | grep cpu[0-9] -c`

start_idle=()
start_total=()
cpu_rate=()

cpu_rate_file=./`hostname`_cpu_rate.csv
if [ -f ${cpu_rate_file} ]; then
    mv ${cpu_rate_file} ${cpu_rate_file}.`date +%m_%d-%H_%M_%S`.bak
fi
for((i=0;i<${cpu_num};i++))
{
    echo -n "cpu$i," >> ${cpu_rate_file}
}
echo -n "cpu_avg" >> ${cpu_rate_file}
echo "" >> ${cpu_rate_file}

while(true)
do
    for((i=0;i<${cpu_num};i++))
    {
        start=$(cat /proc/stat | grep "cpu$i" | awk ‘{print $2" "$3" "$4" "$5" "$6" "$7" "$8}‘)
        start_idle[$i]=$(echo ${start} | awk ‘{print $4}‘)
        start_total[$i]=$(echo ${start} | awk ‘{printf "%.f",$1+$2+$3+$4+$5+$6+$7}‘)
    }
    start=$(cat /proc/stat | grep "cpu " | awk ‘{print $2" "$3" "$4" "$5" "$6" "$7" "$8}‘)
    start_idle[${cpu_num}]=$(echo ${start} | awk ‘{print $4}‘)
    start_total[${cpu_num}]=$(echo ${start} | awk ‘{printf "%.f",$1+$2+$3+$4+$5+$6+$7}‘)
    sleep ${interval}
    for((i=0;i<${cpu_num};i++))
    {
        end=$(cat /proc/stat | grep "cpu$i" | awk ‘{print $2" "$3" "$4" "$5" "$6" "$7" "$8}‘)
        end_idle=$(echo ${end} | awk ‘{print $4}‘)
        end_total=$(echo ${end} | awk ‘{printf "%.f",$1+$2+$3+$4+$5+$6+$7}‘)
        idle=`expr ${end_idle} - ${start_idle[$i]}`
        total=`expr ${end_total} - ${start_total[$i]}`
        idle_normal=`expr ${idle} \* 100`
        cpu_usage=`expr ${idle_normal} / ${total}`
        cpu_rate[$i]=`expr 100 - ${cpu_usage}`
        echo "The CPU$i Rate : ${cpu_rate[$i]}%"
        echo -n "${cpu_rate[$i]}," >> ${cpu_rate_file}
    }
    end=$(cat /proc/stat | grep "cpu " | awk ‘{print $2" "$3" "$4" "$5" "$6" "$7" "$8}‘)
    end_idle=$(echo ${end} | awk ‘{print $4}‘)
    end_total=$(echo ${end} | awk ‘{printf "%.f",$1+$2+$3+$4+$5+$6+$7}‘)
    idle=`expr ${end_idle} - ${start_idle[$i]}`
    total=`expr ${end_total} - ${start_total[$i]}`
    idle_normal=`expr ${idle} \* 100`
    cpu_usage=`expr ${idle_normal} / ${total}`
    cpu_rate[${cpu_num}]=`expr 100 - ${cpu_usage}`
    echo "The Average CPU Rate : ${cpu_rate[${cpu_num}]}%"
    echo -n "${cpu_rate[${cpu_num}]}" >> ${cpu_rate_file}
    echo "------------------"
    echo "" >> ${cpu_rate_file}
done
时间: 2024-08-03 01:53:47

shell 获取cpu使用率的相关文章

shell脚本之获取CPU使用率

今天一个同事要测试OJ项目,同时我这边也需要知道他在压测过程中, CPU的使用率怎么样,虽说可以用top实时查看,但是进程太多了,我不需要获取那么多信息,我仅仅只要知道当前压测过程中CPU实时的使用率是多少,然后根据这个使用率,当达到一定的使用率时,我后台调用对应的接口开启服务器,将负载转移到另外一台服务器上.这算是一种动态的负载均衡或者用一句名词来说,这就是弹性伸缩的一种体现. 将下面cpu.sh 加入crontab中每秒或者每分钟定时执行,同时你还需要建立对应的日志文件,因为有助于你实时查看

Android获取cpu使用率,剩余内存和硬盘容量

1.内存信息 在proc/meminfo下有详细的内存使用情况,我这里获取的内存信息就是从这个文件里获取的.获取到详细的内存信息后根据我自己的需求,从bufferdreader中单独抽取出来了剩余的内存容量. <span style="font-family:Microsoft YaHei;font-size:14px;"> Runtime runtime = Runtime.getRuntime(); Process p; try { p = runtime.exec(C

Linux c 获取cpu使用率(2)

上一篇博文当中,我们谈论了在Linux中如何获取执行命令行的结果,最终得到cpu的 使用率,但是十分不幸的事情是: 1)通过top -n 1 | grep Cpu获取的cpu使用率不会刷新,每次读取结果只能够得到第一次执行的结果. 2)可能导致SIGNAL上的冲突 新的代码的解决原理: 通过读取/proc/stat中的数据计算得出cpu的使用率 #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #i

获取CPU使用率脚本

#!/bin/bash #gino #20150711 CPULOG_1=`cat /proc/stat | head -n1 | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'` SYS_IDLE_1=`echo $CPULOG_1 | awk '{print $4}'` Total_1=`echo $CPULOG_1 | awk '{pr

Android -- 获取CPU使用率

public static float getProcessCpuRate() { float totalCpuTime1 = getTotalCpuTime(); float processCpuTime1 = getAppCpuTime(); try { Thread.sleep(360); } catch (Exception e) { } float totalCpuTime2 = getTotalCpuTime(); float processCpuTime2 = getAppCpuT

获取cpu使用率

http://blog.csdn.net/u010515761/article/details/43225621 http://stackoverflow.com/questions/74674/how-to-do-i-check-cpu-and-memory-usage-in-java http://stackoverflow.com/questions/25552/get-os-level-system-information http://www.javaworld.com/article

利用shell监控cpu、磁盘、内存使用率

利用shell监控cpu.磁盘.内存使用率,达到警报阈值发邮件进行通知 并配合任务计划,即可及时获取报警信息 #!/bin/bash ############################################## #Author: Liuzhengwei - [email protected] #QQ:1135960569 #Last modified: 2017-04-19 21:50 #Filename: jiankong.sh #Description:  #########

利用shell监控cpu、磁盘、内存使用率,达到警报阈值发邮件进行通知

#!/bin/bash#获取cpu使用率cpuUsage=top -n 1 | awk -F '[ %]+' 'NR==3 {print $2}'#获取磁盘使用率data_name="/dev/vda1"diskUsage=df -h | grep $data_name | awk -F '[ %]+' '{print $5}'logFile=/tmp/jiankong.log#获取内存情况mem_total=free -m | awk -F '[ :]+' 'NR==2{print

Atitit. 获取cpu占有率的 java c# .net php node.js的实现

通过wmic接口获取cpu占有率 C:\Users\Administrator.ATTILAXPC188>wmic cpu get LoadPercentage LoadPercentage 71 注意:平均cpu占用率的计算 我们获取的都是瞬间的cpu占用,需要一段时间内的平均cpu才比较好 /atiplat_cms/src/com/attilax/device/Calcor.java 其次,获取的cpu,是总cpu,如果需要精确制导每个核心的占用,也可以使用这个命令的详细版本. 此外,这个w