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

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

1. 示例脚本

bash 复制代码
#!/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) )); then
  echo "内存利用率高于 60%: 当前使用率为 ${mem_usage}%"
else
  echo "内存利用率低于或等于 60%: 当前使用率为 ${mem_usage}%"
fi

2. 简洁版本

bash 复制代码
#!/bin/bash

# 获取内存使用率
mem_usage=$(free | awk '/Mem:/ {print $3/$2 * 100}')

# 判断是否高于 60%
if (( $(echo "$mem_usage > 60" | bc -l) )); then
  echo "内存利用率高: ${mem_usage}%"
else
  echo "内存利用率正常: ${mem_usage}%"
fi

2.1. 说明

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

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

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

bash 复制代码
#!/bin/bash

while true; do
  # 获取内存使用率
  mem_usage=$(free | awk '/Mem:/ {print $3/$2 * 100}')

  # 判断内存使用率
  if (( $(echo "$mem_usage > 60" | bc -l) )); then
    echo "内存利用率高: ${mem_usage}%,继续等待..."
    sleep 10
  else
    echo "内存利用率正常: ${mem_usage}%,退出循环。"
    break
  fi
done

3.1. 说明

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

4. 不需要中间输出

bash 复制代码
#!/bin/bash

while (( $(echo "$(free | awk '/Mem:/ {print $3/$2 * 100}') > 60" | bc -l) )); do
  sleep 10
done

4.1. 说明

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

4.2. 关键点

  • awk 计算内存使用率返回浮点数。
  • 使用 bc -l 进行浮点数比较,避免直接用 (( )) 导致语法错误。
相关推荐
李永奉1 小时前
C语言-嵌入式开发C语言常用预处理指令合集
c语言·开发语言
上海安当技术1 小时前
敏感数据怎么防拖库?信封加密(DEK+KEK 二层密钥)架构设计与 Java 实战
java·开发语言·python
我是唐青枫2 小时前
Java JCommander 实战详解:用注解解析命令行参数
java·开发语言
大鹏说大话2 小时前
C++ 内存布局详解:类、虚函数、虚表底层原理
java·开发语言
键盘会跳舞2 小时前
C++:容器适配器 queue 的源码级拆解
开发语言·c++·queue
Loge编程生活3 小时前
打卡信奥刷题(3449)用C++实现信奥题 P10429 [蓝桥杯 2024 省 B] 拔河
开发语言·数据结构·c++·算法·青少年编程
在世修行4 小时前
从零打造 C# 工业视觉检测系统(八):Modbus RTU 协议解析与 PLC 剔除控制实战
开发语言·c#
sunburn-4 小时前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
AI直播技术杂谈4 小时前
AI直播推流链路中延迟优化的通用技术方案
开发语言·人工智能·php
Dxy12393102165 小时前
python 中的 APScheduler 使用详解
开发语言·python