当前位置:网站首页>Cpu 监控脚本
Cpu 监控脚本
2022-08-08 00:42:00 【公博义】
文章目录
效果:
[[email protected] /data]#bash bash_cpustat.sh
cpu0 2%
cpu1 4%
cpu2 1%
cpu3 3%
cpu4 2%
cpu5 3%
[[email protected] /data]#watch -n 1 bash bash_cpustat.sh
Every 1.0s: bash bash_cpustat.sh Fri Aug 5 15:37:23 2022
cpu0 3%
cpu1 2%
cpu2 1%
cpu3 1%
cpu4 2%
cpu5 2%
......
脚本:
[[email protected] /data]#cat bash_cpustat.sh
#!/bin/bash
_s=0
_a=0
sleep=1
#Simple output
simple_output(){
for (( i = 0; i < $NPROC; i++ )); do
((pcpu[$i]= 100 * (total_subtracted[$i]-idle_subtracted[$i]) / total_subtracted[$i]))
echo -e cpu$i "\t" ${pcpu[$i]}%
done
}
#All information output
all_output(){
echo -e "CPUID\tuser\tnice\tsystem\tidle\tiowait\tirq\tsoftirq\tsteal\tguest\tguest_nice";
for (( i = 0; i < $NPROC; i++ )); do
((user_p[$i]= 100 * user_subtracted[$i]/total_subtracted[$i]))
((nice_p[$i]= 100 * nice_subtracted[$i]/total_subtracted[$i]))
((idle_p[$i]= 100 * idle_subtracted[$i]/total_subtracted[$i]))
((system_p[$i]= 100 * system_subtracted[$i]/total_subtracted[$i]))
((iowait_p[$i]= 100 * iowait_subtracted[$i]/total_subtracted[$i]))
((irq_p[$i]= 100 * irq_subtracted[$i]/total_subtracted[$i]))
((softirq_p[$i]= 100 * softirq_subtracted[$i]/total_subtracted[$i]))
((steal_p[$i]= 100 * steal_subtracted[$i]/total_subtracted[$i]))
((guest_p[$i]= 100 * guest_subtracted[$i]/total_subtracted[$i]))
((guest_nice_p[$i]= 100 * guest_nice_subtracted[$i]/total_subtracted[$i]))
echo -e cpu$i"\t"${user_p[$i]}"\t"${nice_p[$i]}"\t"${system_p[$i]}"\t"${idle_p[$i]}"\t"${iowait_p[$i]}"\t"${irq_p[$i]}"\t"${softirq_p[$i]}"\t"${steal_p[$i]}"\t"${guest_p[$i]}"\t"${guest_nice_p[$i]}
done
}
#Information for help
do_help() {
cat <<EOF A very simple cpu usage percentages monitor tools .Simply calculate and output cpu usage percentages in text .Two versions coding by shell and php . Usage $0 [-a|-s|-h] Options -s: Print simple cpu usages(default) -a: Print all kinds of works of cpu usages -h: Print this messsage For more information , please refer to : https://github.com/catscarlet/cpustat EOF
}
#Error message
do_error() {
do_help 1>2
exit 1
}
#Here start the cpustat
while getopts "ash" op; do
case "$op" in
s) _s=1
;;
a) _a=1
;;
h) do_help
exit
;;
*) do_help
exit
;;
esac
done
NPROC=(`nproc`)
for (( i = 0; i < $NPROC; i++ )); do
((sedline=i+2))
procstat_t1=(`cat /proc/stat | grep '^cpu' |sed -n "$sedline,$sedline p"`)
user_t1[$i]=${procstat_t1[1]}
nice_t1[$i]=${procstat_t1[2]}
system_t1[$i]=${procstat_t1[3]}
idle_t1[$i]=${procstat_t1[4]}
iowait_t1[$i]=${procstat_t1[5]}
irq_t1[$i]=${procstat_t1[6]}
softirq_t1[$i]=${procstat_t1[7]}
steal_t1[$i]=${procstat_t1[8]}
guest_t1[$i]=${procstat_t1[9]}
guest_nice_t1[$i]=${procstat_t1[10]}
((total_t1[$i]=user_t1[$i]+nice_t1[$i]+system_t1[$i]+idle_t1[$i]+iowait_t1[$i]+irq_t1[$i]+softirq_t1[$i]+steal_t1[$i]+guest_t1[$i]+guest_nice))
done
sleep $sleep
for (( i = 0; i < $NPROC; i++ )); do
((sedline=i+2))
procstat_t2=(`cat /proc/stat | grep '^cpu' |sed -n "$sedline,$sedline p"`)
user_t2[$i]=${procstat_t2[1]}
nice_t2[$i]=${procstat_t2[2]}
system_t2[$i]=${procstat_t2[3]}
idle_t2[$i]=${procstat_t2[4]}
iowait_t2[$i]=${procstat_t2[5]}
irq_t2[$i]=${procstat_t2[6]}
softirq_t2[$i]=${procstat_t2[7]}
steal_t2[$i]=${procstat_t2[8]}
guest_t2[$i]=${procstat_t2[9]}
guest_nice_t2[$i]=${procstat_t2[10]}
((total_t2[$i]=user_t2[$i]+nice_t2[$i]+system_t2[$i]+idle_t2[$i]+iowait_t2[$i]+irq_t2[$i]+softirq_t2[$i]+steal_t2[$i]+guest_t2[$i]+guest_nice))
done
for (( i = 0; i < $NPROC; i++ )); do
((user_subtracted[$i]=user_t2[$i]-user_t1[$i]))
((nice_subtracted[$i]=nice_t2[$i]-nice_t1[$i]))
((idle_subtracted[$i]=idle_t2[$i]-idle_t1[$i]))
((system_subtracted[$i]=system_t2[$i]-system_t1[$i]))
((iowait_subtracted[$i]=iowait_t2[$i]-iowait_t1[$i]))
((irq_subtracted[$i]=irq_t2[$i]-irq_t1[$i]))
((softirq_subtracted[$i]=softirq_t2[$i]-softirq_t1[$i]))
((steal_subtracted[$i]=steal_t2[$i]-steal_t1[$i]))
((guest_subtracted[$i]=guest_t2[$i]-guest_t1[$i]))
((guest_nice_subtracted[$i]=guest_nice_t2[$i]-guest_nice_t1[$i]))
((total_subtracted[$i]= total_t2[$i]-total_t1[$i]))
done
[ "$1" = "" ] && _s=1
if [ $_s = 1 ]; then
simple_output
fi
if [ $_a = 1 ]; then
all_output
fi
参考:
https://github.com/catscarlet/cpustat/blob/master/bash_cpustat.sh
边栏推荐
- 多少建模师靠着zbrush这软件成家立业,你们还在等什么
- Failed to initialize NVML: Driver/library version mismatch
- 使用jmh框架进行benchmark测试
- Eureka Basics
- 2022华数杯数学建模 A题B题C题 思路模型资料汇总
- BOSS直聘再爆情色招聘丑闻,面试官行为不堪入目
- Shell脚本中常用命令复习
- torch.utils.data of PyTorch source code interpretation: the whole process of parsing data processing (very good, one article is enough)
- Modern enterprise architecture framework - business architecture
- 继承关系下构造方法的访问特点
猜你喜欢

有关原码,反码,补码那些事

pycharm connect to remote server

PyTorch 源码解读之 torch.utils.data:解析数据处理全流程(非常好,一篇足够)

Stack SQL injection, rounding

Antdv+Asp.net WebApi Development of Student Information Management System (1)

puzzle(018.4)珍珑棋局

Introduction to c language --- custom types: structures, enumerations, unions

使用开源库libyuv中替换开源汇编接口,解决汇编接口中的崩溃问题

Stream did not contain valid UTF-8 ——vs code 中 rust在debug时报错,中文乱码问题

魔王冷饭||#104 魔王谈房圈现状;文化自信;团队管理;睡裤逻辑;育儿资产化
随机推荐
Embedded sharing collection 31-serial port
D. Tournament Countdown(交互题)
BOSS直聘再爆情色招聘丑闻,面试官行为不堪入目
SVG基本图形
High performance cloud storage MinIO combat - native data object
头脑风暴:除数博弈
Is it safe and reliable to open a mobile stock account?
带你刷(牛客网)C语言百题(第五天)
程序后台运行并实时输出日志
leetcode-每日一题636. 函数的独占时间(模拟栈)
Distributed agreement of Lease mechanism
LeetCode weeks checking] "305th week 20220807
喜讯|宏时数据获得CMMI3级认证!欢迎了解自研统一运维监控平台!
进程间的通信终章之【消息队列,信号量,共享内存】
2021 RoboCom 世界机器人开发者大赛-本科组(决赛)7-1绿色围栏(模拟)
两个栈实现一个队列(图解最简单版)
kylin-desktop日志文件功能说明
聊聊项目中的缓存-2022新项目
最小公倍数三种方法(附代码)
提升领导力的有效方法