监控系统的内存使用情况是系统管理和性能优化的关键部分之一。在 Linux 环境下,有多种方法来实现对内存的监控和管理。本文将介绍 12 种常用的方法,涵盖了从基本的命令行工具到更高级的监控工具的使用,帮助您全面掌握系统的资源使用情况。
1. free 命令
free
命令用于显示系统内存的使用情况,包括总内存、已使用内存、空闲内存等。
free -h
示例输出:
total used free shared buff/cache available
Mem: 7.7G 3.1G 1.1G 1.2G 3.5G 2.3G
Swap: 2.0G 0B 2.0G
2. top 命令
top
命令可以实时查看系统的各项资源使用情况,包括内存、CPU、进程等。
top
示例输出:
Tasks: 257 total, 1 running, 256 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.0 us, 0.7 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7818.7 total, 1174.9 free, 3291.9 used, 3352.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 4183.2 avail Mem
3. vmstat 命令
vmstat
命令用于显示系统的虚拟内存使用情况,包括内存、磁盘、CPU 等。
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 1221008 330940 922332 0 0 0 1 13 19 0 0 100 0 0
4. sar 命令
sar
命令可以收集、报告和保存系统的性能数据,包括内存、CPU、磁盘等方面的信息。
sar -r
示例输出:
08:10:01 PM kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
08:20:01 PM 1259828 4397864 2285128 29.36 248272 3015904 2381884 15.59 2404508 2014540 52
08:30:01 PM 1243748 4381748 2302040 29.54 248672 3018064 2381884 15.59 2411572 2017944 60
5. /proc/meminfo 文件
/proc/meminfo
文件包含了系统的内存信息,可以通过查看该文件来获取内存使用情况。
cat /proc/meminfo
示例输出:
MemTotal: 7818180 kB
MemFree: 1207196 kB
MemAvailable: 4115164 kB
Buffers: 329540 kB
Cached: 2884056 kB
SwapCached: 0 kB
6. pmap 命令
pmap
命令用于显示进程的内存映射信息,包括进程占用的内存地址、权限、大小等。
pmap PID
示例输出:
0000559b7ffac000 2060K r-x-- /usr/bin/bash
0000559b801cb000 244K r--s- /usr/lib/locale/locale-archive
0000559b801ff000 4K r---- /usr/lib/locale/locale-archive
...
mapped: 202476K writeable/private: 456K shared: 4K
7. smem 命令
smem
命令用于以更友好的方式显示内存使用情况,并支持按照进程进行排序。
smem
示例输出:
PID User Command Swap USS PSS RSS
1 root /sbin/init 0.00% 0.00% 0.01% 0.01%
2 root [kthreadd] 0.00% 0.00% 0.00% 0.00%
...
2135 user /usr/bin/firefox 0.00% 0.51% 1.46% 3.13%
8. atop 命令
atop
命令是一个交互式的系统监控工具,可以显示系统资源使用情况的详细信息。
atop
示例输出:
ATOP - myhostname 2022/01/01 08:00:01 10s elapsed
PR VIRT RES SHR S CPU% MEM% TIME+ COMMAND
1 2500 456 312 S 0.0 0.0 0:00.01 bash
9. htop 命令
htop
命令是一个交互式的系统监控工具,类似于 top 命令,但提供了更加友好的界面和功能。
htop
10. glances 命令
glances
命令是一个交互式的系统监控工具,可以显示系统各项资源的使用情况,并支持网络监控和插件扩展。
glances
11. Grafana + Prometheus
Grafana 和 Prometheus 是一组流行的开源监控工具,可以实现对系统资源的监控和可视化。
12. 自定义脚本
还可以编写自定义的监控脚本,通过调用系统命令或读取/proc 文件系统来获取系统资源使用情况,并根据需求进行处理和展示。
通过以上 12 种方法,可以全面掌握 Linux 系统的内存使用情况,及时发现和解决资源瓶颈问题,确保系统的稳定性和性能表现。