linux - CPU 使用服务器和监控信息

标签 linux bash sh cpu monitoring

我需要使用 shell 脚本检查 total CPU % usage 以便在不超过临界阈值的情况下监控级别,可能无需安装任何特定包(操作系统:Linux Suse 12) .

这是一台 2x E5-2667 v4 8/核的大型服务器。

enter image description here

查看问题我发现了一些东西并尝试了它:

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

  1. 这在多 CPU/多核系统上真的正确吗?
  2. 使用正常运行时间的 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/

相关文章:

linux - 无法使用 set -eo pipefail 在管道中成功调用任何外部 shell 脚本

bash - 在 shell 脚本中解压缩文件时出错。 - 需要PK兼容。 v5.1(可以做v4.6)

linux - 将文件或命令的内容放入剪贴板的命令

shell - 获取目录中选定的扩展文件数量和大小

bash - 如何在 unix 终端模拟器中使用脚本命令?

linux - 无法将正确的文件移动到 mvfiles

linux - 如何将 CAT 系统调用的输出重定向到变量并解析变量数据

linux - Elinks浏览器-如何不用鼠标粘贴?

bash 羊群 : Why 200?

bash - 如何在 bash 中打印用户输入的平方根?