Linux如何查看内存的使用情况?

在Linux系统的日常管理和运维中,了解内存的使用情况是至关重要的。内存的使用状态直接影响着系统的性能和稳定性。无论是排查系统性能问题、监控应用程序的资源占用,还是进行系统资源规划,准确掌握内存的使用情况都是必不可少的。本文将详细介绍在Linux系统中查看内存使用情况的多种方法,帮助读者全面了解系统内存的使用状况。

目录#

  1. 使用free命令
  2. 使用top命令
  3. 使用htop命令
  4. 使用vmstat命令
  5. 查看/proc/meminfo文件
  6. 总结
  7. 参考资料

1. 使用free命令#

free命令是Linux系统中最常用的查看内存使用情况的命令之一,它可以显示系统的物理内存、交换空间(swap)的使用情况。

基本用法#

free

执行该命令后,会输出类似以下的信息:

              total        used        free      shared  buff/cache   available
Mem:       8160360     2076720     4377164       11084     1706476     5677480
Swap:      2097148           0     2097148
  • total:表示物理内存或交换空间的总量。
  • used:表示已使用的内存或交换空间。
  • free:表示空闲的内存或交换空间。
  • shared:表示多个进程共享的内存。
  • buff/cache:表示系统用于缓存文件系统数据的内存。
  • available:表示系统实际可用于新进程的内存。

常用选项#

  • -h:以人类可读的格式显示内存大小,例如使用GB、MB等单位。
free -h

输出结果如下:

              total        used        free      shared  buff/cache   available
Mem:           7.8G        2.0G        4.2G         11M        1.6G        5.4G
Swap:          2.0G          0B        2.0G
  • -s <间隔时间>:每隔指定的时间(秒)重复显示内存信息。
free -s 5

该命令会每隔5秒更新一次内存使用信息。

2. 使用top命令#

top命令是一个动态的系统监控工具,它可以实时显示系统中各个进程的资源占用情况,包括内存使用情况。

基本用法#

top

执行该命令后,会进入top的交互界面,显示系统的整体信息和各个进程的详细信息。在界面的顶部会显示系统的内存使用情况,如下所示:

top - 15:30:25 up  1:23,  2 users,  load average: 0.01, 0.04, 0.05
Tasks: 139 total,   1 running, 138 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7969.1 total,   4272.1 free,   2028.9 used,   1668.1 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   5540.1 avail Mem

其中,MiB Mem部分显示了物理内存的使用情况,MiB Swap部分显示了交换空间的使用情况。

常用操作#

  • M:按内存使用量对进程进行排序,从高到低显示。
  • q:退出top界面。

3. 使用htop命令#

htoptop命令的增强版本,它提供了更直观、更丰富的系统监控界面。

安装htop#

在大多数Linux发行版中,可以使用包管理器来安装htop。例如,在Ubuntu或Debian系统中,可以使用以下命令进行安装:

sudo apt-get install htop

在CentOS或RHEL系统中,可以使用以下命令进行安装:

sudo yum install htop

基本用法#

htop

执行该命令后,会进入htop的交互界面,显示系统的整体信息和各个进程的详细信息。在界面的顶部会显示系统的内存使用情况,与top命令类似,但界面更加美观和易于操作。

常用操作#

  • F6:选择排序方式,例如按内存使用量排序。
  • F9:向选中的进程发送信号,例如终止进程。
  • q:退出htop界面。

4. 使用vmstat命令#

vmstat命令可以显示系统的虚拟内存统计信息,包括内存、交换空间、磁盘I/O等方面的信息。

基本用法#

vmstat

输出结果如下:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 4377164  12332 1694144    0    0     0     0    2    1  0  0 100  0  0
  • procs:进程相关信息,r表示运行队列中的进程数,b表示等待I/O的进程数。
  • memory:内存相关信息,swpd表示已使用的交换空间,free表示空闲的物理内存,buff表示缓冲区的内存,cache表示缓存区的内存。
  • swap:交换空间相关信息,si表示从磁盘交换到内存的速度(每秒kb),so表示从内存交换到磁盘的速度(每秒kb)。
  • io:磁盘I/O相关信息,bi表示从块设备读取的块数(每秒),bo表示写入块设备的块数(每秒)。
  • system:系统相关信息,in表示每秒的中断数,cs表示每秒的上下文切换数。
  • cpu:CPU相关信息,us表示用户态CPU使用率,sy表示内核态CPU使用率,id表示空闲CPU使用率,wa表示等待I/O的CPU使用率,st表示被虚拟机偷走的CPU时间。

常用选项#

  • -S <单位>:指定显示内存大小的单位,例如k表示KB,m表示MB。
vmstat -S m
  • -n <次数>:指定显示的次数,显示指定次数后退出。
vmstat -n 3

5. 查看/proc/meminfo文件#

/proc是Linux系统中的一个虚拟文件系统,它包含了系统的各种运行时信息。/proc/meminfo文件包含了系统内存的详细信息。

基本用法#

cat /proc/meminfo

输出结果如下:

MemTotal:        8160360 kB
MemFree:         4377164 kB
MemAvailable:    5677480 kB
Buffers:           12332 kB
Cached:          1694144 kB
SwapCached:            0 kB
Active:          2033420 kB
Inactive:        1568132 kB
Active(anon):    1872720 kB
Inactive(anon):    17440 kB
Active(file):     160700 kB
Inactive(file):  1550692 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:       1888680 kB
Mapped:            44720 kB
Shmem:             11084 kB
KReclaimable:     110720 kB
Slab:            172728 kB
SReclaimable:     110720 kB
SUnreclaim:        62008 kB
KernelStack:        3456 kB
PageTables:        10680 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6177328 kB
Committed_AS:    3342780 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:              288 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0 kB
HugePages_Free:        0 kB
HugePages_Rsvd:        0 kB
HugePages_Surp:        0 kB
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      110592 kB
DirectMap2M:     8159232 kB

该文件包含了系统内存的各种详细信息,例如总内存大小、空闲内存大小、交换空间使用情况等。

总结#

本文介绍了在Linux系统中查看内存使用情况的多种方法,包括freetophtopvmstat命令以及查看/proc/meminfo文件。不同的方法适用于不同的场景,free命令适合快速查看系统的整体内存使用情况,tophtop命令适合实时监控各个进程的内存占用情况,vmstat命令适合查看系统的虚拟内存统计信息,而查看/proc/meminfo文件则可以获取系统内存的详细信息。在实际使用中,可以根据具体需求选择合适的方法。

参考资料#