Linux看内存命令详解,从基础到高级的内存管理工具

03-16 9536阅读
本文详细介绍了Linux系统中查看和管理内存的命令,从基础到高级工具全面覆盖,基础命令如freetop,用于快速查看系统内存使用情况,包括总内存、已用内存、空闲内存等,vmstat命令则提供了更详细的内存、交换分区和系统性能统计信息,高级工具如htopglances提供了交互式界面,便于实时监控内存使用情况,/proc/meminfo文件提供了内核级别的内存信息,适合深入分析,通过这些工具,用户可以全面掌握系统内存的使用情况,优化系统性能。

Linux内存管理:从基础到高级的内存查看命令详解

在Linux系统中,内存管理是系统管理员和开发人员必须掌握的核心技能之一,无论是监控系统性能、排查内存泄漏,还是优化应用程序的内存使用,了解如何查看和分析内存使用情况都至关重要,本文将详细介绍Linux中常用的内存查看命令,从基础到高级,帮助您全面掌握Linux内存管理的工具和方法。

基础命令:free

free命令是Linux中最常用的查看内存使用情况的命令之一,它提供了系统内存的概览,包括物理内存、交换空间(swap)以及缓存和缓冲区的使用情况。

Linux看内存命令详解,从基础到高级的内存管理工具 第1张

命令格式:

free [选项]

常用选项:

  • -h:以人类可读的格式显示内存大小(KB、MB、GB)。
  • -m:以MB为单位显示内存大小。
  • -g:以GB为单位显示内存大小。
  • -s <秒数>:每隔指定的秒数刷新一次内存信息。

示例:

free -h

输出示例:

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        3.2G        200M        2.4G        5.1G
Swap:          2.0G        0B          2.0G

解释:

  • total:总内存大小。
  • used:已使用的内存大小。
  • free:空闲的内存大小。
  • shared:共享内存大小。
  • buff/cache:用于缓存和缓冲区的内存大小。
  • available:可用内存大小,表示系统在不使用交换空间的情况下可以分配的内存。

free命令提供了系统内存的快速概览,适合日常监控和初步分析。

详细内存信息:vmstat

vmstat命令提供了更详细的内存和系统性能信息,包括内存、交换空间、CPU使用情况、I/O等。

命令格式:

vmstat [选项] [间隔时间] [次数]

常用选项:

  • -a:显示活跃和非活跃内存。
  • -s:显示内存统计信息。
  • -d:显示磁盘统计信息。

示例:

vmstat 1 5

输出示例:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 3245678 123456 2345678   0    0    12    34  567 1234  5  2 93  0  0

解释:

  • swpd:使用的交换空间大小。
  • free:空闲内存大小。
  • buff:缓冲区大小。
  • cache:缓存大小。
  • si:每秒从交换空间读入的内存大小。
  • so:每秒写入交换空间的内存大小。
  • bi:每秒从块设备读入的块数。
  • bo:每秒写入块设备的块数。

vmstat命令适合用于实时监控系统性能,特别是内存和I/O的使用情况。

进程内存使用:tophtop

tophtop命令是Linux中常用的进程监控工具,它们不仅可以查看系统资源的使用情况,还可以查看每个进程的内存使用情况。

Linux看内存命令详解,从基础到高级的内存管理工具 第2张

top命令:

top

输出示例:

top - 14:32:01 up  1:23,  2 users,  load average: 0.15, 0.10, 0.05
Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.3 us,  1.2 sy,  0.0 ni, 96.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   8000.0 total,   2000.0 free,   3000.0 used,   3000.0 buff/cache
MiB Swap:   2000.0 total,   2000.0 free,      0.0 used.   5000.0 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 user      20   0  123456   12345   1234 S   2.3   0.1   0:00.12 process1

解释:

  • VIRT:进程使用的虚拟内存总量。
  • RES:进程使用的物理内存大小。
  • SHR:进程使用的共享内存大小。
  • %MEM:进程使用的内存百分比。

htop命令: htoptop的增强版,提供了更友好的界面和更多的功能。

htop

输出示例:

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 1234 user      20   0  123M   12M   1.2M S  2.3  0.1  0:00.12 process1

htop支持鼠标操作,可以更方便地查看和管理进程。

内存映射:pmap

pmap命令用于查看进程的内存映射情况,显示进程使用的内存区域的详细信息。

命令格式:

pmap [选项] <PID>

常用选项:

  • -x:显示扩展信息,包括内存大小、权限等。
  • -d:显示设备映射信息。

示例:

pmap -x 1234

输出示例:

Address           Kbytes     RSS   Dirty Mode  Mapping
0000555555554000       4       4       0 r-x-- process1
0000555555555000       4       4       4 rw--- process1
00007ffff7dd0000     132     132       0 r-x-- libc-2.27.so

解释:

  • Address:内存地址。
  • Kbytes:内存区域的大小(KB)。
  • RSS:实际使用的物理内存大小(KB)。
  • Dirty:脏页大小(KB)。
  • Mode:内存区域的权限(r=读,w=写,x=执行)。
  • Mapping:内存区域的映射文件或设备。

pmap命令适合用于分析进程的内存使用情况,特别是查找内存泄漏或异常内存使用。

内存统计:/proc/meminfo

/proc/meminfo文件包含了系统内存的详细统计信息,可以通过cat命令查看。

Linux看内存命令详解,从基础到高级的内存管理工具 第3张

命令格式:

cat /proc/meminfo

输出示例:

MemTotal:        8000000 kB
MemFree:         2000000 kB
MemAvailable:    5000000 kB
Buffers:          100000 kB
Cached:          2000000 kB
SwapCached:            0 kB
Active:          3000000 kB
Inactive:        2000000 kB

解释:

  • MemTotal:总内存大小。
  • MemFree:空闲内存大小。
  • MemAvailable:可用内存大小。
  • Buffers:缓冲区大小。
  • Cached:缓存大小。
  • SwapCached:交换缓存大小。
  • Active:活跃内存大小。
  • Inactive:非活跃内存大小。

/proc/meminfo提供了系统内存的详细统计信息,适合用于深入分析内存使用情况。

高级工具:smem

smem是一个高级的内存统计工具,可以显示进程的内存使用情况,并按不同的内存类型(如USS、PSS、RSS)进行分类。

命令格式:

smem [选项]

常用选项:

  • -p:以百分比显示内存使用情况。
  • -u:按用户显示内存使用情况。
  • -k:以KB为单位显示内存大小。
  • -m:以MB为单位显示内存大小。

示例:

smem -u -m

输出示例:

User     Count     Swap      USS      PSS      RSS
user1       10       0M      10M      20M      30M
user2        5       0M       5M      10M      15M

解释:

  • USS:唯一内存大小(Unique Set Size),表示进程独占的内存大小。
  • PSS:比例内存大小(Proportional Set Size),表示进程共享内存的按比例分配大小。
  • RSS:实际内存大小(Resident Set Size),表示进程实际使用的物理内存大小。

smem命令适合用于分析进程的内存使用情况,特别是共享内存的分析。

Linux提供了丰富的内存查看命令和工具,从基础的freevmstat,到高级的smempmap,每种工具都有其独特的用途和优势,掌握这些工具的使用方法,可以帮助您更好地监控和分析系统的内存使用情况,及时发现和解决内存相关的问题。

无论是系统管理员、开发人员,还是普通用户,了解这些命令的使用都是非常有价值的,希望本文能够帮助您全面掌握Linux中的内存查看命令,提升您的系统管理和性能优化能力。


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]