我需要使用 shell 脚本检查 total CPU % usage 以便在不超过临界阈值的情况下监控级别,可能无需安装任何特定包(操作系统:Linux Suse 12) .
这是一台 2x E5-2667 v4 8/核的大型服务器。
查看问题我发现了一些东西并尝试了它:
1-top -bn1 | grep "Cpu(s)" | \sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \awk '{print 100 - $1"%"}'
2-CPU_LOAD=$(sar -P ALL 1 2 |grep 'Average.*all' |awk -F" " '{print 100.0 -$NF}')
我还尝试从 iostat 执行 100-idle
- 这在多 CPU/多核系统上真的正确吗?
- 使用正常运行时间的 cpu 负载计算 cpu 总使用率是否正确?
使用代码我得到了单核的平均值,而我需要的是 CPU 总使用量百分比的结果 问候, 谢谢
最佳答案
您最好完全在 awk 中实现该解决方案:
top -bn1 | awk -F, '/id/ { for (i=1;i<=NF;i++) { if ( $i ~ /[[:digit:]]{2}.[[:digit:]][[:blank:]]+id/ ) { split($i,arry," ");print arry[1]" - idle" }'
从 top 获取输出,然后检查是否有任何包含 id 的输出。如果满足条件,则取行中每个逗号分隔的数据,并针对 2 个数字进行模式匹配,一个小数,然后是一个或多个数字,一个空格,然后是 id。如果是这种情况,则根据空格将变量拆分为数组并打印第一个元素。
关于linux - CPU 使用服务器和监控信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081069/