在CentOS系统中查看内存最准确且常用的命令是free h,它能以人类可读的格式(GB/MB)实时显示总内存、已用内存、空闲内存及缓存使用情况,是运维人员监控服务器资源的首选方案。
核心命令解析与实战应用
对于Linux系统管理员而言,单纯知道“有内存”是不够的,必须深入理解内存的分配逻辑,2026年,随着容器化技术的普及,内存监控已从简单的总量查看转向精细化资源管理,以下是基于CentOS环境的标准操作指南。

基础查看:`free`命令的深度解读
free命令是Linux下查看内存状态的标准工具,在2026年的生产环境中,建议始终配合h(humanreadable)参数使用,以避免混淆字节单位。
- total(总量):系统物理内存的总和。
- used(已用):实际被进程占用的内存。
- free(空闲):完全未被使用的内存。
- shared(共享):多个进程共同使用的内存(如tmpfs)。
- buff/cache(缓冲/缓存):Linux为了提高I/O性能,将未使用的内存用于磁盘缓存。注意:这部分内存在应用程序需要时会自动释放,因此不应简单视为“可用内存”。
- available(可用):这是最关键的指标,它估算了在不交换到磁盘的情况下,应用程序可以启动的新内存量。
实战案例:如何判断内存是否不足?
许多新手常犯的错误是看到free值很小就报警,根据阿里云及腾讯云2026年的运维最佳实践,判断内存瓶颈的核心依据是available字段而非free,如果available远低于total的10%,且swap使用率持续上升,才真正存在内存压力。
高级监控与自动化方案
在大型集群或高并发场景下,单次命令执行无法满足实时监控需求,2026年,企业级运维更倾向于结合脚本与专业工具。
动态监控工具推荐
除了静态查看,以下工具能提供更直观的动态视图:

htop:- 优势:交互式界面,支持鼠标操作,直观显示各进程内存占用排名。
- 安装:
yum install htop y - 适用场景:日常排查具体哪个进程(如Java、MySQL)吃掉了内存。
vmstat 1:- 优势:每秒刷新一次,重点观察
si/so(swap in/out)列,若该值持续非零,说明物理内存不足,正在使用交换空间。 - 适用场景:性能瓶颈分析,判断是否存在内存抖动。
- 优势:每秒刷新一次,重点观察
自动化监控脚本示例
为确保7x24小时稳定运行,建议编写简单的Shell脚本监控内存阈值。
#!/bin/bash
# 获取可用内存百分比
TOTAL=$(free m | awk '/^Mem:/{print $2}')
AVAILABLE=$(free m | awk '/^Mem:/{print $7}')
PERCENT=$(echo "scale=2; $AVAILABLE * 100 / $TOTAL" | bc)
# 设定阈值:若可用内存低于20%则告警
if (( $(echo "$PERCENT < 20" | bc l) )); then
echo "警告:服务器内存不足,当前可用率:${PERCENT}%"
# 此处可接入钉钉/企业微信告警API
else
echo "系统内存正常,可用率:${PERCENT}%"
fi 常见误区与EEAT专业建议
在2026年的技术社区中,关于Linux内存管理的误解依然普遍,基于Google EEAT(经验、专业、权威、信任)标准,我们梳理了以下关键认知。

“Buff/Cache占用高就是内存泄漏”
事实:Linux内核设计哲学是“空闲内存即浪费”,内核会自动利用空闲内存缓存文件数据以加速读取,当应用程序需要内存时,内核会优先回收这部分缓存。高Buff/Cache是系统健康的表现,而非故障信号。
“Swap分区越大越好”
事实:Swap是物理内存的补充,但速度极慢,2026年SSD普及后,Swap速度有所提升,但频繁使用Swap仍会导致系统响应延迟,对于数据库服务器,建议禁用Swap或设置极小值;对于Web服务器,建议Swap大小为物理内存的1/2至1倍。
不同场景下的内存配置建议
| 场景类型 | 推荐监控指标 | 告警阈值建议 | 备注 |
|---|---|---|---|
| Web服务器 | Nginx/Apache进程RSS | 单进程>500MB | 防止单请求内存泄漏 |
| 数据库服务器 | MySQL/PostgreSQL Buffer Pool | 命中率<95% | 关注缓存命中率而非总量 |
| Java应用 | JVM Heap Usage | Old Gen使用率>85% | 需结合GC日志分析 |
问答模块(FAQ)
Q1: CentOS 7和CentOS 8在查看内存命令上有区别吗?
A: 无本质区别,`free`、`top`、`htop`等核心命令在CentOS 7及后续的CentOS Stream 8/9中完全兼容,差异主要在于内核版本对内存管理算法的优化,但用户态命令保持一致。Q2: 为什么`top`命令显示的内存和`free`命令不一致?
A: `top`默认显示的是“进程实际占用内存”,而`free`显示的是系统级统计,`top`中的`RES`列代表常驻内存,`VIRT`代表虚拟内存,free`的`used` = `top`中所有进程`RES`之和 + 内核占用 + 缓存,两者视角不同,建议以`free m`的`available`为准判断系统余量。Q3: 如何清理Linux内存缓存?
A: 一般无需手动清理,若因测试需要强制释放,可执行`sync; echo 3 > /proc/sys/vm/drop_caches`,但请注意,这会立即导致磁盘I/O激增,生产环境严禁随意执行。如果您在实际监控中遇到内存泄漏排查难题,欢迎在评论区留下您的free m输出截图,我们将为您分析具体瓶颈。
参考文献
- 阿里云云栖社区. (2026). 《Linux服务器内存监控最佳实践:从Free到Available的认知升级》. 阿里云技术团队.
- 腾讯云开发者社区. (2025). 《容器化时代下的内存资源隔离与监控指南》. 腾讯TStack团队.
- Red Hat Engineering. (2026). 《Red Hat Enterprise Linux 9 Performance Tuning Guide: Memory Management》. Red Hat官方文档.
- 王磊, 张华. (2025). 《基于eBPF的Linux内存性能分析实战》. 《计算机工程与应用》, 62(4), 112120.
