查看内存占用:
#!/bin/bash
# 获取内存总量和已用内存(以KB为单位)
total_mem=$(grep MemTotal /proc/meminfo | awk '{print $2}')
used_mem=$(grep Active: /proc/meminfo | grep -v Inactive | awk '{print $2}')
# 注意:这里使用了Active内存作为已用内存的示例,但它可能不完全等同于传统意义上的“已用”内存。
# 对于更准确的“已用”内存计算,可能需要结合其他字段(如Cached、Buffers等)进行计算。
# 但为了简化示例,这里只使用Active内存。
# 将内存从KB转换为MB(可选,取决于你想要的精度)
total_mem_mb=$(echo "$total_mem / 1024" | bc)
used_mem_mb=$(echo "$used_mem / 1024" | bc)
# 计算内存使用率
mem_usage=$(echo "scale=2; $used_mem_mb / $total_mem_mb * 100" | bc)
# 检查内存使用率是否超过80%
if (( $(echo "$mem_usage > 80" | bc -l) )); then
echo "内存使用率已超过80%"
else
echo "内存使用率未超过80%"
fi
-----------------------------------------------------
#!/bin/bash
# 获取总内存和可用内存(以KB为单位)
total_memory=$(grep MemTotal /proc/meminfo | awk '{print $2}')
available_memory=$(grep MemAvailable /proc/meminfo | awk '{print $2}')
# 将内存从KB转换为MB(可选,但通常更直观)
total_memory_mb=$(echo "$total_memory / 1024" | bc)
available_memory_mb=$(echo "$available_memory / 1024" | bc)
# 计算当前内存使用率(百分比)
# 注意:这里我们直接使用MB来计算,以避免大数运算中的精度问题
memory_usage_percent=$(echo "scale=2; 100 - ($available_memory_mb * 100 / $total_memory_mb)" | bc)
# 去掉百分号并转换为整数(如果需要与整数比较)
# 但在这个例子中,我们保留小数进行比较,因为bc已经给出了浮点数结果
memory_usage_int=${memory_usage_percent%.*} # 如果确实需要整数比较,可以取消注释并使用此行
# 检查内存使用率是否超过80%
# 注意:由于memory_usage_percent是浮点数,我们需要用bc进行比较
if (( $(echo "$memory_usage_percent > 80" | bc -l) )); then
echo "当前内存使用率超过80%"
else
echo "当前内存使用率未超过80%"
fi