当前位置: 首页 > news >正文

bash 判断内存利用率是否高于60%

在 Bash 脚本中,可以通过 free 命令获取内存利用率,然后结合 awk 和条件判断语句实现监控内存利用率是否高于 60%。以下是一个示例脚本:

1. 示例脚本

#!/bin/bash# 获取总内存和已使用内存
total_mem=$(free | awk '/Mem:/ {print $2}')
used_mem=$(free | awk '/Mem:/ {print $3}')# 计算内存使用率
mem_usage=$(awk "BEGIN {print ($used_mem / $total_mem) * 100}")# 判断内存使用率是否超过 60%
if (( $(echo "$mem_usage > 60" | bc -l) )); thenecho "内存利用率高于 60%: 当前使用率为 ${mem_usage}%"
elseecho "内存利用率低于或等于 60%: 当前使用率为 ${mem_usage}%"
fi

2. 简洁版本

#!/bin/bash# 获取内存使用率
mem_usage=$(free | awk '/Mem:/ {print $3/$2 * 100}')# 判断是否高于 60%
if (( $(echo "$mem_usage > 60" | bc -l) )); thenecho "内存利用率高: ${mem_usage}%"
elseecho "内存利用率正常: ${mem_usage}%"
fi

2.1. 说明

  • free | awk '/Mem:/ {print $3/$2 * 100}':直接计算使用率百分比。
  • bc:处理浮点数比较。

3. 如果内存利用率高于60%那就等待,否则10s,在判断,否则跳出while循环

以下是实现该逻辑的 Bash 脚本:

#!/bin/bashwhile true; do# 获取内存使用率mem_usage=$(free | awk '/Mem:/ {print $3/$2 * 100}')# 判断内存使用率if (( $(echo "$mem_usage > 60" | bc -l) )); thenecho "内存利用率高: ${mem_usage}%,继续等待..."sleep 10elseecho "内存利用率正常: ${mem_usage}%,退出循环。"breakfi
done

3.1. 说明

  1. 内存检查:每次计算内存使用率。
  2. 高于 60%:等待 10 秒,然后重新检查。
  3. 低于等于 60%:退出循环。
  4. sleep 10:延迟 10 秒,避免高频运行占用资源。

4. 不需要中间输出

#!/bin/bashwhile (( $(echo "$(free | awk '/Mem:/ {print $3/$2 * 100}') > 60" | bc -l) )); dosleep 10
done

4.1. 说明

  1. 内存判断:直接在 while 循环中完成,利用 awk 计算内存使用率。
  2. 退出条件:内存使用率低于或等于 60% 时自动退出循环。
  3. 无输出:脚本不打印任何信息,完全静默运行。

4.2. 关键点

  • awk 计算内存使用率返回浮点数。
  • 使用 bc -l 进行浮点数比较,避免直接用 (( )) 导致语法错误。
http://www.lryc.cn/news/502624.html

相关文章:

  • 推送(push)项目到gitlab
  • centos9升级OpenSSH
  • 硬件成本5元-USB串口采集电表数据完整方案-ThingsPanel快速入门
  • 在AWS EMR上用Hive、Spark、Airflow构建一个高效的ETL程序
  • 前端(四)css选择器、css的三大特性
  • vscode 打开 setting.json
  • 关于网络安全攻防演化博弈的研究小议
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(7)
  • 远程桌面防护的几种方式及优缺点分析
  • ASP.NET|日常开发中连接Sqlite数据库详解
  • python的自动化seleium安装配置(包含谷歌的chromedriver)
  • QT requested database does not belong to the calling thread.线程中查询数据报错
  • 服务器一般装什么系统?
  • Linux vi/vim 编辑器使用教程
  • JavaEE多线程案例之阻塞队列
  • 梳理你的思路(从OOP到架构设计)_基本OOP知识04
  • nginx反向代理(负载均衡)
  • Android系统应用主要模块
  • 【万字详解】三维重建(二)——NeRF、NeuS、MeshUDF、NeuralUDF、3DGS、GShell
  • 【RK3588 Linux 5.x 内核编程】-内核线程与Seqlock
  • 访问者模式的理解和实践
  • 在Scala中对Map函数的使用
  • PyTorch基本使用-张量的索引操作
  • OpenCV实验:图片加水印
  • sql server log文件
  • Elasticsearch 集群部署
  • 微信小程序5-图片实现点击动作和动态加载同类数据
  • 策略梯度定理公式的详细推导
  • 力扣-图论-10【算法学习day.60】
  • 《Python WEB安全 库全解析》