Linux系统如何查询内存使用情况?

在Linux系统中,内存是系统运行的核心资源之一,及时掌握内存使用情况对于系统性能优化、故障排查至关重要,Linux提供了多种命令和工具来查询内存使用状态,下面将详细介绍常用方法及其输出解读。

linux系统如何查询内存使用情况

使用free命令查看内存总量及使用情况

free是最基础的内存查看命令,通过读取/proc/meminfo文件生成易读的内存统计信息,适合快速了解系统内存整体使用状态。

基本用法

free
free -h  # 以人类可读格式显示(如KB、MB、GB)
free -m  # 以MB为单位显示

输出解读

以free -h为例,输出包含两行(内存和交换分区)和多个列:

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        3.2G        256M        2.4G        4.9G
Swap:          2.0G          0B        2.0G
  • total:物理内存总容量(如7.7G);
  • used:已使用内存(包含应用程序占用、共享内存、缓冲区等);
  • free:完全未被使用的内存(3.2G);
  • shared:被多个进程共享的内存(如tmpfs文件系统);
  • buff/cache:用于缓冲(buffers)和缓存(cached)的内存(2.4G),这部分可被程序回收;
  • available:可供新程序使用的内存总量(4.9G),包含可回收的buff/cache,是实际可用的内存参考值(比free更准确)。

注意

used并非仅指应用程序占用的内存,而是包含了系统内核缓冲区和缓存,因此判断内存是否紧张应重点关注available列,而非used或free。

使用top/htop命令动态监控内存使用

top是实时监控系统资源的工具,可按内存排序查看进程占用情况;htop是top的增强版,界面更友好,支持鼠标操作和树状进程视图。

linux系统如何查询内存使用情况

top命令用法

top  # 默认按CPU使用率排序,按Shift+M可按内存使用率排序

关键内存相关列

  • VIRT:进程虚拟内存总量(包括代码、数据、共享库、交换区等);
  • RES:进程常驻内存集(实际物理内存占用,不包括交换区);
  • SHR:进程共享内存(如与其他进程共享的库文件);
  • %MEM:进程物理内存占用率(RES/总物理内存×100%)。

htop命令优势

安装后(sudo apt install htop/sudo yum install htop),可通过颜色区分不同状态进程,按F6选择排序字段(如MEM%),按F5展开进程树,查看父子进程内存关系,更适合复杂场景。

使用vmstat命令查看内存流动状态

vmstat(Virtual Memory Statistics)可报告进程、内存、交换区、I/O等系统整体状态,适合分析内存压力和交换分区使用趋势。

基本用法

vmstat 1   # 每秒刷新一次,持续输出

关键内存相关字段

  • swpd:已使用的交换分区大小(KB);
  • free:空闲内存(KB);
  • buff:用于缓冲区的内存(KB);
  • cache:用于缓存的内存(KB);
  • si:从交换区读入内存的数据量(KB/s),反映交换区压力;
  • so:写入交换区的数据量(KB/s),若持续大于0,说明物理内存不足,频繁使用交换区会降低性能。

查看/proc/meminfo获取原始内存信息

/proc/meminfo是内核提供的内存原始数据文件,内容最详细,适合深度排查问题。

查看方式

cat /proc/meminfo

关键字段示例

  • MemTotal:物理内存总量;
  • MemFree:完全空闲内存;
  • Buffers:块设备缓冲区内存;
  • Cached:页面缓存(文件系统缓存);
  • SwapTotal:交换区分区总量;
  • SwapFree:交换区分区空闲量;
  • Slab:内核数据结构缓存(如inode、dentry缓存)。

示例输出片段

MemTotal:       8058956 kB
MemFree:        3341560 kB
Buffers:         245752 kB
Cached:         2514440 kB
SwapTotal:      2097148 kB
SwapFree:      2097148 kB

不同命令对比及适用场景

为方便选择,以下总结常用内存查看工具的特点:

linux系统如何查询内存使用情况

命令 主要功能 适用场景 常用选项
free 查看内存总量及使用分布 快速了解整体内存状态 -h(人类可读)、-m(MB)
top 实时监控进程内存占用 动态观察进程内存变化 Shift+M(按内存排序)
htop 增强版top,支持树状视图等 复杂进程内存分析 F6(排序)、F5(进程树)
vmstat 内存流动及交换区状态 分析内存压力和交换区使用趋势 1(持续刷新)
/proc/meminfo 原始内核内存数据 深度排查内存问题 无(直接查看文件内容)

相关问答FAQs

Q1:为什么free命令显示的可用内存(available)比MemFree小很多?
A:MemFree是内核完全未分配的物理内存,而available是内核评估的可供新程序使用的内存总量,包含了可回收的Cached(页面缓存)和Buffers(块缓冲区),Linux会优先使用空闲内存作为缓存,以提高文件读写性能,因此available通常远大于MemFree,是判断内存可用性的更准确指标,若available持续接近0,说明内存紧张,即使MemFree仍有剩余。

Q2:top和htop在内存监控上有什么区别?如何选择?
A:top是Linux基础工具,功能简单,仅支持键盘操作,界面较简陋,且无法直接查看进程树;htop是第三方增强工具,提供彩色界面、鼠标支持、进程树视图、实时进程过滤等功能,内存监控更直观,若只需快速查看进程内存占用,top足够;若需分析复杂进程关系(如查找内存泄漏的父子进程),或需要更友好的操作体验,推荐使用htop,安装htop可通过包管理器(如sudo apt install htop或sudo yum install htop)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/36347.html

赞 (0)
酷番叔酷番叔
上一篇 2025年10月5日 12:40
下一篇 2025年10月5日 13:07

相关推荐

  • Linux如何运行程序与脚本?

    运行可执行程序直接运行(需可执行权限)步骤:chmod +x 程序名 # 添加可执行权限./程序名 # 执行当前目录下的程序示例:chmod +x myapp./myapp注意:若程序在系统路径(如/usr/bin),可直接输入程序名(如firefox),通过包管理器安装的程序使用系统包管理器安装的软件(如AP……

    2025年8月8日
    22600
  • 如何实现Linux与Windows资源共享?

    通过Samba实现双向共享(推荐方案)Samba是Linux对SMB/CIFS协议的开源实现,完美兼容Windows共享协议,企业级应用验证其稳定性,操作步骤:Linux端安装Samba服务# Debian/Ubuntusudo apt update && sudo apt install sa……

    2025年7月7日
    41300
  • Linux如何全盘查找文件?

    在Linux系统中,全盘查找文件或内容是系统管理和日常运维中的常见需求,通过合理使用命令行工具可以高效完成,本文将详细介绍Linux全盘查找的常用方法、命令参数及实际应用场景,使用find命令:最灵活的全盘文件查找find命令是Linux下最强大的文件查找工具,支持按文件名、类型、大小、时间、权限等多种条件递归……

    2025年10月8日
    22500
  • linux如何建配置文件

    在Linux系统中,配置文件是系统运行和应用服务的核心,用于存储参数、选项和规则,控制系统的行为(如网络设置、服务启动、用户环境等),创建和管理配置文件是Linux运维和开发的基础技能,本文将详细讲解Linux中创建配置文件的方法、格式规范、常见场景及注意事项,配置文件的基础概念配置文件通常为纯文本格式,存储在……

    2025年9月15日
    21200
  • Linux系统如何访问禅道?

    在Linux系统中访问禅道,通常需要搭建对应的Web环境(如LAMP或LNMP),并完成禅道的安装与配置,以下是详细步骤:环境准备禅道是基于PHP开发的,因此需要安装Linux操作系统、Web服务器(Apache/Nginx)、数据库(MySQL/MariaDB)及PHP环境,以Ubuntu 20.04和Cen……

    2025年9月9日
    26300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信