【Linux 运维】超简单 Shell 脚本实现内存监控与告警(附两种写法 )
目录
方法二:高效简洁(只需一行代码实现,不用 if,纯逻辑运算符))
一、需求背景
为什么要做内存监控?
在 Linux 服务器运维中,内存资源耗尽会直接导致服务宕机,因此实时监控内存使用率并在阈值触发告警是运维的核心需求之一。本文基于题目要求(内存使用率>50% 告警,<50% 提示安全),通过两种不同的 Shell 脚本实现方案,从基础命令到高效语法,带你吃透内存监控脚本的编写思路与优化技巧。
二、核心原理:内存使用率的计算方式
free命令:是获取内存信息的核心工具

其输出中关键字段含义如下:
| 字段 | 含义 |
|---|---|
total |
系统总内存(单位 KB) |
used |
已使用内存(含缓存 / 缓冲,现代 Linux 已优化,接近实际使用量) |
| Mem | 内存大小 |
内存使用率计算公式:使用率=total内存used内存×100%
三、实验要求
- 自动获取系统的总内存和已使用内存
- 计算内存使用率百分比
- 当使用率 **>50%** 时,输出告警信息
- 当使用率 **<50%** 时,输出安全提示
四、实验主要配置
这里我用两种简单且好理解的方法为大家展示:
方法一:分布实现(新手首选)
这种方法会把每一步都拆开,适合刚接触shell脚本的学者,核心使用了 Shell 的if条件判断语句,对有其他语言基础的读者而言学习门槛较低。。
if语句语法介绍:
单分支结构:
### 单分支结构
```shell
# 语法1:
if [条件表达式];
then
指令
fi #条件语句结束
```
双分支结构:
if [条件表达式];
then
指令序列1
else
指令序列2
fi
多分支结构:
if 条件表达式1
then
指令序列1
elif 条件表达式2
then
指令序列2
else
指令序列n
fi
新手易踩坑:Shell 脚本的if语句细节规范
很多初学者在编写 Shell 脚本时,常会遇到 “代码逻辑正确但运行报错” 的情况,这类问题大多源于容易被忽略的语法细节。编写时需格外注意以下两点:
- 条件判断中,
[]前后必须保留空格,否则会触发语法错误; if语句必须以fi作为结束标记,不可省略。
完整代码如下:
# 1. 获取已使用内存(单位:KB)
used_mem=$(free | grep Mem | tr -s " " | cut -d" " -f3)
# 2. 获取系统总内存(单位:KB)
total_mem=$(free | grep Mem | tr -s " " | cut -d" " -f2)
# 3. 计算内存使用率(整数除法,结果取整)
percent=$(( used_mem * 100 / total_mem ))
# 4. 输出当前使用率
echo "当前内存使用为:${percent}%"
# 5. 阈值判断与告警
if [ $percent -gt 50 ]; then
echo " 内存使用超过50%,请注意!"
else
echo "内存使用低于50%,状态安全"
fi
逐行拆解讲解:
free命令:用来查看系统内存使用情况,输出包含total(总内存)、used(已使用)、free(空闲)等字段。grep Mem:过滤出 “内存(Mem)” 相关的行,排除掉 Swap 交换分区的信息,避免干扰计算。tr -s " ":把多个连续的空格压缩成单个空格,解决free命令输出列分隔不均的问题,方便后续用cut提取数据。cut -d" " -f3:以空格为分隔符,提取第 3 列数据(也就是used已使用内存值);同理-f2提取第 2 列的total总内存值。$(( ... )):Shell 的整数运算语法,实现已用内存*100/总内存的百分比计算,结果会自动取整。if [ $percent -gt 50 ]:用-gt(greater than,大于)判断使用率是否超过 50%,并输出对应的提示信息。
运行结果:

小提示:在执行脚本前,需先创建以 .sh 为后缀的文本文件,将 Shell 代码写入其中,再通过 sh 命令运行脚本。
方法二:高效简洁(只需一行代码实现,不用 if,纯逻辑运算符))
因在前面我们要准备的查找代码都写过了这里就不过多介绍,直接给出判断核心代码:
[[ $percent -gt 50 ]] && echo "内存告警" || echo "内存安全"
结果展示:

五、总结
本次内存监控脚本开发案例,依托 Linux 最基础的文本处理命令完成数据采集,搭配 Shell 原生运算与判断语法实现业务逻辑,未引入 awk 等进阶命令,极大降低了入门学习难度。
通过本案例学习,读者可熟练掌握 free 内存查看指令、管道组合命令、Shell 整数运算以及两种主流条件判断写法,夯实 Shell 脚本编写基础。该脚本实用性极强,既能够满足课程实验、课后练习需求,也可应用于中小型服务器简易资源巡检工作,是从 Linux 入门迈向运维实战的优质练手项目。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)