[{"data":1,"prerenderedAt":59},["ShallowReactive",2],{"article-129":3},{"code":4,"msg":5,"data":6,"count":14},200,"查询成功",{"id":7,"title":8,"keywords":9,"description":10,"category_id":11,"content":12,"body_html":13,"thumb_up":14,"clicks":15,"sort":14,"remark":13,"status":11,"is_open":11,"is_deleted":14,"is_top":11,"is_recommend":11,"create_time":16,"update_time":17,"image_id":18,"url":13,"member_id":14,"cate_name":19,"prev":20,"next":23,"tags":26,"words":30,"read_time":31,"comments":14,"cover":32,"relevant":33},129,"Linux系统内存监控全面指南：命令与工具解析","linux,内存","在Linux系统管理中，内存监控是一项至关重要的任务。合理监控和管理内存资源可以帮助系统管理员及时发现性能瓶颈、预防系统崩溃，并确保应用程序高效运行。Linux提供了丰富的命令和工具来查看内存使用情况，从简单的实时监控到详细的内存统计分析。本文将全面介绍Linux系统中常用的内存查看命令和工具，帮助您深入了解系统内存状态。",1,"## 引言\n\n在Linux系统管理中，内存监控是一项至关重要的任务。合理监控和管理内存资源可以帮助系统管理员及时发现性能瓶颈、预防系统崩溃，并确保应用程序高效运行。Linux提供了丰富的命令和工具来查看内存使用情况，从简单的实时监控到详细的内存统计分析。本文将全面介绍Linux系统中常用的内存查看命令和工具，帮助您深入了解系统内存状态。\n\n## 1. `top` 命令：经典实时监控\n\n`top` 是Linux系统中最常用的实时系统监控命令之一，它提供了动态更新的进程列表和系统资源使用情况，包括内存使用信息。\n\n### 使用方法\n```bash\ntop\n```\n\n### 内存相关快捷键\n- **`m`**：切换内存显示模式（图形\u002F百分比\u002F数值）\n- **`E`**：切换顶部汇总区的内存单位（KB\u002FMB\u002FGB）\n- **`e`**：切换进程列表区的内存单位\n\n`top` 命令界面直观，适合快速查看系统整体内存使用情况和消耗内存最多的进程。\n\n## 2. `free` 命令：详细内存统计（推荐）\n\n`free` 命令是查看内存使用情况的首选工具，它提供了系统内存总量、已使用量、空闲量等详细信息。\n\n### 常用选项\n```bash\nfree -h        # 人类可读格式（GB\u002FMB）\nfree -m        # 以 MB 为单位\nfree -g        # 以 GB 为单位\nfree -s 5      # 每 5 秒刷新一次\n```\n\n### 输出字段解释\n| 字段 | 说明 |\n|------|------|\n| **total** | 系统总内存 |\n| **used** | 已使用内存（包括缓存和缓冲区） |\n| **free** | 完全空闲的内存 |\n| **shared** | 被多个进程共享的内存 |\n| **buff\u002Fcache** | 用于缓存文件内容和I\u002FO缓冲区的内存 |\n| **available** | 估算的可分配给新进程的内存量 |\n\n`free -h` 命令因其简洁明了的输出格式，成为日常内存监控的最常用命令。\n\n## 3. `htop` 命令：增强版top\n\n`htop` 是 `top` 命令的增强版，提供了更友好的交互式界面和更多功能。\n\n### 安装方法\n```bash\n# Debian\u002FUbuntu系统\nsudo apt install htop\n\n# CentOS\u002FRHEL系统\nsudo yum install htop\n```\n\n### 使用方法\n```bash\nhtop\n```\n\n`htop` 提供了彩色界面、进程树视图和更灵活的排序选项，支持鼠标操作，是系统管理员的常用工具之一。\n\n## 4. `vmstat` 命令：虚拟内存统计\n\n`vmstat`（virtual memory statistics）命令用于显示虚拟内存、进程、CPU活动等系统统计信息。\n\n### 常用选项\n```bash\nvmstat -s     # 显示详细的内存统计信息\nvmstat 2 5    # 每2秒刷新一次，共显示5次\n```\n\n`vmstat -s` 可以提供大量内存相关的统计数据，包括内存分页、交换空间使用等详细信息。\n\n## 5. `\u002Fproc\u002Fmeminfo` 文件：内存信息的终极来源\n\nLinux系统将内存相关的详细信息存储在 `\u002Fproc\u002Fmeminfo` 虚拟文件中，这是系统内存信息的最权威来源。\n\n### 查看全部内容\n```bash\ncat \u002Fproc\u002Fmeminfo\n```\n\n### 查看关键信息\n```bash\ngrep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree)' \u002Fproc\u002Fmeminfo\n```\n\n`\u002Fproc\u002Fmeminfo` 包含了大量详细的内存统计数据，适合需要深入分析系统内存状态的场景。\n\n## 6. `smem` 命令：高级内存报告\n\n`smem` 是一个高级内存报告工具，它可以提供比传统工具更准确的内存使用统计，特别是在共享内存的计算方面。\n\n### 安装方法\n```bash\nsudo apt install smem\n```\n\n### 常用选项\n```bash\nsmem -t -k    # 显示表格格式，以KB为单位\nsmem -p       # 以百分比形式显示内存使用情况\n```\n\n`smem` 特别适合分析共享内存的使用情况，对于理解多进程应用程序的内存消耗非常有帮助。\n\n## 7. 综合监控工具\n\n除了上述专用内存监控工具外，还有一些综合系统监控工具也提供了内存监控功能。\n\n### Glances\n\nGlances 是一个功能强大的跨平台监控工具，可以同时监控CPU、内存、磁盘、网络等多项系统资源。\n\n```bash\n# 安装\nsudo apt install glances\n\n# 使用\nglances\n```\n\n### nmon\n\nnmon（Nigel's Monitor）是一个适用于AIX和Linux系统的监控工具，可以收集并显示系统性能数据。\n\n```bash\n# 安装\nsudo apt install nmon\n\n# 使用\nnmon\n```\n\n这些综合监控工具适合需要同时监控多项系统资源的场景。\n\n## 内存分析关键指标说明\n\n在分析Linux系统内存使用情况时，需要重点关注以下关键指标：\n\n1. **实际使用内存** = `used - buff\u002Fcache`\n   - 真正被应用程序使用的内存量\n\n2. **真正可用内存** = `free + buff\u002Fcache`\n   - 系统可立即分配给新进程的内存量\n\n3. **缓存内存（buff\u002Fcache）**\n   - 用于缓存文件内容和I\u002FO缓冲区的内存\n   - 这部分内存可以在需要时被系统释放\n\n4. **内存压力**\n   - 关注 `available` 值，过低表示系统内存紧张\n   - 当 `available` 内存接近零时，系统可能会使用交换空间或触发OOM（Out of Memory）杀手\n\n## 快速查看脚本\n\n以下是一个简单的Shell脚本，可以快速查看系统内存的关键信息：\n\n```bash\n#!\u002Fbin\u002Fbash\n\n# 一键查看内存概要\necho \"======= 内存概览 =======\"\nfree -h\necho \"\"\necho \"======= 内存详情 =======\"\ngrep -E '^(MemTotal|MemFree|MemAvailable|SwapTotal|SwapFree)' \u002Fproc\u002Fmeminfo | awk '{printf \"%-20s %s\\n\", $1, $2\u002F1024 \" MB\"}'\n```\n\n将上述内容保存为 `check_memory.sh` 并赋予执行权限后即可使用：\n```bash\nchmod +x check_memory.sh\n.\u002Fcheck_memory.sh\n```\n\n## 总结\n\nLinux提供了丰富的内存监控命令和工具，每种方法都有其特点和适用场景：\n\n| 工具\u002F命令 | 适用场景 | 特点 |\n|----------|---------|------|\n| `top` | 实时监控 | 经典工具，动态更新 |\n| `free -h` | 快速查看 | 简洁明了，推荐日常使用 |\n| `htop` | 交互式监控 | 界面友好，功能丰富 |\n| `vmstat` | 虚拟内存分析 | 提供分页和交换空间信息 |\n| `\u002Fproc\u002Fmeminfo` | 深入分析 | 最详细的内存信息来源 |\n| `smem` | 共享内存分析 | 准确计算共享内存使用 |\n| `glances\u002Fnmon` | 综合监控 | 同时监控多项系统资源 |\n\n选择哪种方法取决于您的具体需求：`free -h` 适合快速查看当前内存状态，`\u002Fproc\u002Fmeminfo` 适合获取最详细的内存信息，`top\u002Fhtop` 适合实时监控内存使用情况和消耗内存最多的进程。\n\n通过合理使用这些工具，您可以全面了解Linux系统的内存使用情况，及时发现并解决内存相关的性能问题。",null,0,44,"2026-01-04 15:29:17","2025-12-16 10:56:44",66,"技术杂谈",{"id":21,"title":22},128,"PHP取余运算全面解析：从基础到高级应用",{"id":24,"title":25},130,"ThinkPHP中Cache类读取Redis出现null值的解决方案",[27],{"id":28,"name":29},39,"Linux",2320,5,"https:\u002F\u002Ftp.myong.top\u002Fstorage\u002Farticle\u002F20230407\u002Fe70ad72ca8f855e68e71fb0e124ede5a.jpeg",[34,39,44,49,54],{"id":35,"title":36,"create_time":37,"description":38},89,"获取腾讯“邮我”的链接","2020-06-16 10:47:34","腾讯QQ邮箱提供了“邮我”组件，可以放在自己的网站上，让别人点击提供的图片或者链接就可以发Email过来，该文章分享的是如何获取到其中的链接。",{"id":40,"title":41,"create_time":42,"description":43},98,"本站点JavaScript相关特效使用方法整理","2021-04-22 18:38:53","本站的页面用的特效有，粒子线canvas-nest，动态彩带canvas-ribbon，鼠标点击特效以及音乐播放器，本文整理了特效的使用方法",{"id":45,"title":46,"create_time":47,"description":48},106,"阿里开源数据同步组件Canal","2023-10-26 22:43:32","最开始听说canal是从mysql与redis双写一致性解决方案，当时并没有太在意，最近由于需要实时同步数据，如果在代码对insert\u002Fupdate\u002Fdelete做拦截也可以实现，但对代码侵入性太大了，并且后期更改时容易有遗漏，风险太高，这时就又想到了canal，canal的好处在于对业务代码没有侵入，因为是基于监听binlog日志去进行同步数据，这个真的是太爽爽爽了。并且实时性也能做到准实时，这也是canal为什么这么流行，因为确实很多企业会用来做数据同步的方案。",{"id":50,"title":51,"create_time":52,"description":53},62,"内网使用Composer","2019-10-08 23:29:23","最近本地部署Laravel开发环境时，遇到公司的内网无法正常使用Composer下载Laravel，后来发现是要设置公司内网代理",{"id":55,"title":56,"create_time":57,"description":58},75,"Hexo-SEO优化开启静态文件压缩功能","2019-12-30 21:34:32","个人对HEXO搭建博客的SEO优化方案进行总结，从本地的文章结构到定期推送，再到SEO关键词优化做一个全面体系的汇总，如果有更好的方法可以私聊我。\n\n",1783431649881]