linux计算CPU平均使用率

该脚本用于获取系统CPU的核心数,计算平均CPU使用率,并在平均使用率超过90%时发出警告。它利用了Linux命令如`grep`,`top`,`awk`和`bc`进行计算。此外,文章表达了对在CSDN等平台分享技术知识的工程师们的感谢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cpu_num=$(grep -c processor /proc/cpuinfo)
cpu_usage=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2+$4}')
avg_cpu_usage=$(echo "scale=2; $cpu_usage/$cpu_num" | bc)
warning=`echo "$avg_cpu_usage>90" | bc`
if [ $warning -ne 1 ];then
    echo "warning : CPU use ${avg_cpu_usage}%"
fi

#############################################################################

鸣谢:特别感谢所有在CSDN等网站热爱技术、乐于分享的工程师们。

说明:本文只是个人学习之用。

#############################################################################

### 查看特定日期的CPU平均使用率Linux 中,`mpstat` 和其他工具主要用于实时监控 CPU 统计信息。然而,要查询历史数据中的 CPU 平均使用率,则需要依赖系统日志或其他记录机制来获取过去某一时刻或时间段内的统计数据。 #### 方法一:利用 `sar` 工具 `sar` 是一个强大的系统活动报告工具,能够定期收集并存储系统的性能数据到 `/var/log/sa/` 目录下(具体路径可能因发行版而异)。如果该功能已启用,可以通过以下命令查看指定日期的 CPU 使用情况: ```bash sar -f /var/log/sa/sa<DD> -u ALL ``` 其中 `<DD>` 表示目标日期的日部分(例如 15 日则为 sa15),`-u ALL` 参数用于显示所有 CPU 的使用详情。此方法的前提条件是系统管理员已经配置了 `sysstat` 软件包,并启用了定时采集任务[^1]。 #### 方法二:解析 `/proc/stat` 文件的历史副本 如果未安装 `sysstat` 或者其日志不可用,另一种方式是从备份中恢复当天的 `/proc/stat` 文件内容。假设存在这样的备份,可以编写脚本来分析这些原始数据以计算 CPU 占用比例: ```python def calculate_cpu_usage(prev_stat, curr_stat): prev_idle = sum([int(x) for i,x in enumerate(prev_stat.split()) if i in [4]]) curr_idle = sum([int(x) for i,x in enumerate(curr_stat.split()) if i in [4]]) total_diff = sum(int(c)-int(p) for p,c in zip(prev_stat.split(),curr_stat.split())) idle_diff = curr_idle - prev_idle cpu_usage = (total_diff - idle_diff)/total_diff*100 return round(cpu_usage,2) prev_line="cpu 19763 34 2388 108846" curr_line="cpu 20000 35 2400 110000" print(f"Average CPU Usage: {calculate_cpu_usage(prev_line, curr_line)}%") # Example Output ``` 注意以上代码仅为演示目的,实际操作需替换为真实的前后状态字符串。此外还需考虑多核环境下的总计算逻辑调整[^3]。 #### 方法三:借助第三方监控解决方案 对于更复杂或者长期需求的企业场景来说,部署专业的服务器性能监测平台可能是更好的选择。像 Zabbix、Prometheus 配合 Grafana 可视化界面不仅支持自定义告警阈值(如不超过建议上限70%),而且具备强大灵活的数据保留策略便于追溯任意时段的趋势变化图谱[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值