Linux如何查看内存的使用情况?
在Linux系统的日常管理和运维中,了解内存的使用情况是至关重要的。内存的使用状态直接影响着系统的性能和稳定性。无论是排查系统性能问题、监控应用程序的资源占用,还是进行系统资源规划,准确掌握内存的使用情况都是必不可少的。本文将详细介绍在Linux系统中查看内存使用情况的多种方法,帮助读者全面了解系统内存的使用状况。
目录#
- 使用
free命令 - 使用
top命令 - 使用
htop命令 - 使用
vmstat命令 - 查看
/proc/meminfo文件 - 总结
- 参考资料
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命令#
htop是top命令的增强版本,它提供了更直观、更丰富的系统监控界面。
安装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 35. 查看/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系统中查看内存使用情况的多种方法,包括free、top、htop、vmstat命令以及查看/proc/meminfo文件。不同的方法适用于不同的场景,free命令适合快速查看系统的整体内存使用情况,top和htop命令适合实时监控各个进程的内存占用情况,vmstat命令适合查看系统的虚拟内存统计信息,而查看/proc/meminfo文件则可以获取系统内存的详细信息。在实际使用中,可以根据具体需求选择合适的方法。