[Linux服务器] 【Linux】Linux 查看内存使用情况

1997 0
Honkers 2025-3-12 21:51:59 来自手机 | 显示全部楼层 |阅读模式

1 概述

Linux 查看内存使用情况的几种方法包括使用 free 命令、top 命令、htop 命令、vmstat 命令和/proc/meminfo 文件。这些方法可以帮助用户了解系统内存的使用情况,包括总内存、已用内存、空闲内存、缓存和交换分区等信息。

2 查看方法

2.1 /proc/meminfo

这个动态更新的虚拟文件实际上是许多其他内存相关工具 (如:free / ps / top) 等的组合显示。在 linux 系统中,/proc/meminfo 是一个报告可用和已用内存量的虚拟文件,它包含有关系统内存使用情况以及内核使用的缓冲区和共享内存的实时信息。进程的内存使用信息也可以通过 /proc/[pid]/statm 和 /proc/[pid]/status 来查看。

  1. [root@localhost ~]# cat /proc/meminfo
  2. MemTotal: 2895156 kB
  3. MemFree: 752592 kB
  4. MemAvailable: 1827172 kB
  5. Buffers: 1116 kB
  6. Cached: 1213428 kB
  7. SwapCached: 0 kB
  8. Active: 975116 kB
  9. Inactive: 878320 kB
  10. Active(anon): 639740 kB
  11. Inactive(anon): 26636 kB
  12. Active(file): 335376 kB
  13. Inactive(file): 851684 kB
  14. Unevictable: 0 kB
  15. Mlocked: 0 kB
  16. SwapTotal: 2097148 kB
  17. SwapFree: 2097148 kB
  18. Dirty: 212 kB
  19. Writeback: 0 kB
  20. AnonPages: 638916 kB
  21. Mapped: 163036 kB
  22. Shmem: 27484 kB
  23. Slab: 107376 kB
  24. SReclaimable: 45276 kB
  25. SUnreclaim: 62100 kB
  26. KernelStack: 9584 kB
  27. PageTables: 35784 kB
  28. NFS_Unstable: 0 kB
  29. Bounce: 0 kB
  30. WritebackTmp: 0 kB
  31. CommitLimit: 3544724 kB
  32. Committed_AS: 4088468 kB
  33. VmallocTotal: 34359738367 kB
  34. VmallocUsed: 218980 kB
  35. VmallocChunk: 34359277564 kB
  36. Percpu: 55296 kB
  37. HardwareCorrupted: 0 kB
  38. AnonHugePages: 137216 kB
  39. CmaTotal: 0 kB
  40. CmaFree: 0 kB
  41. HugePages_Total: 0
  42. HugePages_Free: 0
  43. HugePages_Rsvd: 0
  44. HugePages_Surp: 0
  45. Hugepagesize: 2048 kB
  46. DirectMap4k: 126848 kB
  47. DirectMap2M: 3018752 kB
  48. DirectMap1G: 0 kB
复制代码

2.2 atop

atop是一款用于实时监控Linux系统性能的命令行工具,可以提供对CPU、内存、磁盘、网络等资源的监测和分析。详细可以参考:linux atop 命令详解

  1. --安装atop工具
  2. sudo apt-get install atop
  3. --查询
  4. sudo atop
复制代码

2.3 free

free 命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。数据表示已用/可用内存和以KB为单位的交换内存大小。

  1. [root@localhost ~]# free -h
  2. total used free shared buff/cache available
  3. Mem: 2.8G 775M 817M 27M 1.2G 1.8G
  4. Swap: 2.0G 0B 2.0G
复制代码

指令说明:

指令说明
total总安装内存
used正在运行的进程当前正在使用的内存(used= total – free – buff/cache)
free未使用的内存(free= total – used – buff/cache)
shared多个进程共享的内存
buffers作系统保留的内存,在进程需要时分配为缓冲区
cached存储在 RAM 中最近使用的文件
buff/cacheBuffers + Cache
available可用于启动新应用程序,无需交换的内存大小

free 命令可以添加多个选项标志用来格式化输出:

选项标志结果
-b以 Byte 为单位输出
-k以 KB 为单位的输出
-m以 MB 为单位的输出
-g以 GB 为单位输出
-l详细的低内存和高内存统计信息
-o旧格式(无 -/+缓冲区/缓存行)
-tRAM + swap
-s多少秒更新一次
-c更新多少次

2.4 GNOME System Monitor

GNOME System Monitor 是一个显示最近一段时间内的 CPU、内存、交换区及网络的使用情况的视图工具。它还提供了一种查看 CPU 及内存使用情况的方法。

  1. gnome-system-monitor
复制代码

2.5 htop

htop 命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。

  1. --安装
  2. sudo apt install htop
  3. --查询
  4. htop
复制代码

2.6 memstat

memstat 是一个有效识别 executable(s), process(es) and shared libraries 使用虚拟内存情况的命令。给定一个进程 ID,memstat 可以列出这个进程相关的可执行文件、数据和共享库。

  1. memstat -p
复制代码

2.7 nmon

nmon 是一个基于 ncurses 的系统基准测试工具,它可以监控 CPU、内存、I/O、文件系统及网络资源等的互动模式。对于内存的使用,它可以实时的显示总 / 剩余内存、交换空间等信息。

  1. nmon
复制代码

2.8 ps

ps 命令可以实时的显示各个进程的内存使用情况。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (totalamount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 “–sort” 选项对进程进行排序,例如按 RSS 进行排序:

  1. ps aux | sort -rss
复制代码

2.9 smem

smem是Linux系统上的一款可以生成多种内存耗用报告的命令行工具。与现有工具不一样的是smem可以报告实际使用的物理内存(PSS),这是一种更有意义的指标。可以衡量虚拟内存系统的库和应用程序所占用的内存数量。

由于大部分的物理内存通常在多个应用程序之间共享,名为实际使用物理内存(RSS)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。PSS这个参数而是衡量了每个应用程序在每个共享内存区中的“公平分配”,给出了一个切合实际的衡量指标。

  1. Options:
  2. -h, --help show this help message and exit
  3. -H, --no-header disable header line
  4. -c COLUMNS, --columns=COLUMNS
  5. columns to show
  6. -t, --totals show totals
  7. -R REALMEM, --realmem=REALMEM
  8. amount of physical RAM
  9. -K KERNEL, --kernel=KERNEL
  10. path to kernel image
  11. -m, --mappings show mappings
  12. -u, --users show users
  13. -w, --system show whole system
  14. -P PROCESSFILTER, --processfilter=PROCESSFILTER
  15. process filter regex
  16. -M MAPFILTER, --mapfilter=MAPFILTER
  17. map filter regex
  18. -U USERFILTER, --userfilter=USERFILTER
  19. user filter regex
  20. -n, --numeric numeric output
  21. -s SORT, --sort=SORT field to sort on
  22. -r, --reverse reverse sort
  23. -p, --percent show percentage
  24. -k, --abbreviate show unit suffixes
  25. --pie=PIE show pie graph
  26. --bar=BAR show bar graph
  27. -S SOURCE, --source=SOURCE
复制代码

例如:

  • smem -u #参数-u 显示每个用户所耗用的内存总量
  • smem -p #查看耗用内存情况的百分比
  • smem -w #查看系统内存使用情况
  • smem -w -p
  • smem -R 24G -w #参数-R REALMEM,REALMEM这个值是指物理内存数量。此参数可以让smem在整个系统(-w)的输出中发现固件/硬件所耗用的内存数量(对比上下即可发现,注意firmware/hardware)
  • smem -c “name user pss” #参数-c 用来显示需要展示的列
  • smem -s rss #参数-s 根据某一列(例如 rss)来排序
  • smem -s rss -r #参数-r 一般与参数-s结合使用,表示反转排序(从升序改为降序)
  • smem -M mysql #参数-M 过滤相关进程

2.10 top

top 命令提供了实时的运行中的程序的资源使用统计,可以根据内存的使用和大小来进行排序。包括正常运行时间、平均负荷、正在运行的任务数、登录用户数、CPU 数量/CPU 利用率、内存/交换区的系统进程。

  1. top
复制代码

2.11 vmstat

vmstat 命令显示实时的和平均的统计,覆盖 CPU、内存、I/O 等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。

  1. [root@localhost ~]# vmstat
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
  3. r b swpd free buff cache si so bi bo in cs us sy id wa st
  4. 2 0 0 714320 1116 1308756 0 0 372 16 124 197 3 2 94 0 0
复制代码

3 总结

  • free 命令是最常用的方法,可以直接显示系统内存的使用情况
  • top 和 htop 命令可以实时监控系统的内存使用情况
  • vmstat 命令可以显示更详细的内存使用情况
  • /proc/meminfo 文件包含了系统内存的详细信息,可以通过 cat 命令查看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行