监控 Linux 系统内存情况的方法

1. 使用free命令查看系统内存情况

在Linux系统中,可以使用free命令来查看系统的内存使用情况。该命令可以显示系统的总内存、已使用内存、空闲内存以及缓存和缓冲区的使用情况。

free -h

其中,-h选项用于以人类可读的方式显示内存大小。

下面是一个示例输出:

total used free shared buffers cached

Mem: 7.7G 3.0G 4.7G 228M 450M 1.8G

-/+ buffers/cache: 747M 6.9G

Swap: 2.0G 0B 2.0G

从输出中可以看到,系统总共有7.7G的内存,其中已使用3.0G,空闲4.7G,缓存和缓冲区分别占用450M和1.8G。

2. 使用top命令实时监控内存使用情况

top命令是一个强大的系统监控工具,可以实时显示系统的各项性能指标,包括内存使用情况。

top

运行top命令后,会实时显示系统的各个进程的 CPU 使用率、内存使用率等信息。

在top命令的交互界面中,可以按下键盘上的m键,可以按照内存使用率进行排序。此时,会将内存使用最高的进程排在最前面。

下面是一个示例输出:

top - 16:38:10 up 3 days, 5:32, 2 users, load average: 0.00, 0.01, 0.05

Tasks: 128 total, 1 running, 127 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

MiB Mem : 7974.2 total, 231.7 free, 3546.8 used, 4195.7 buff/cache

MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3937.3 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

2232 root 20 0 343068 13276 8584 S 0.0 0.2 0:00.24 systemd

2233 root 20 0 12468 3552 2944 S 0.0 0.0 0:00.18 (sd-pam)

2536 root 20 0 12536 3276 2768 R 0.0 0.0 0:00.00 top

从输出中可以看到,进程的内存使用率在%MEM列中显示,占用内存最多的进程排在最前面。

3. 使用ps命令查看进程的内存使用情况

ps命令可以显示系统中运行的进程信息,包括进程的内存使用情况。

ps aux

其中,aux选项用于显示所有用户的所有进程,并以用户为统计单位。

下面是一个示例输出:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 168164 4496 ? Ss 16:38 0:06 /sbin/init

root 2 0.0 0.0 0 0 ? S 16:38 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? I< 16:38 0:00 [rcu_gp]

从输出中可以看到,进程的内存使用率在%MEM列中显示,VSZ列显示进程的虚拟内存大小,RSS列显示进程占用的物理内存大小。

4. 使用sar命令统计系统内存的历史使用情况

sar命令可以统计系统的各项性能指标,包括内存的使用情况。

sar -r

其中,-r选项用于统计内存的使用情况。

下面是一个示例输出:

Linux 5.4.0-42-generic (hostname)

2021年09月01日

_x86_64_

(1 CPU)

16时35分52秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty

16时35分57秒 145752 5995976 97.59 87740 2808532 6285732 94.73 1824076 3835864 12

Average: 145752 5995976 97.59 87740 2808532 6285732 94.73 1824076 3835864 12

从输出中可以看到,kbmemfree列显示空闲内存大小,kbmemused列显示已使用内存大小,%memused列显示已使用内存的百分比。

5. 使用vmstat命令监控系统内存情况

vmstat命令可以实时显示系统的虚拟内存使用情况。

vmstat 1

其中,1表示每隔1秒钟刷新一次显示。

下面是一个示例输出:

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 152476 87496 2864660 0 0 8 23 74 47 0 0 100 0 0

0 0 0 152476 87496 2864660 0 0 0 0 125 127 0 0 100 0 0

0 0 0 152476 87496 2864660 0 0 0 0 129 136 0 0 100 0 0

从输出中可以看到,free列显示空闲内存大小,buff列显示缓冲区的使用情况,cache列显示缓存的使用情况。

总结

通过上述几种方法,我们可以实时监控和统计Linux系统的内存使用情况。使用free命令可以查看系统的总内存、已使用内存和空闲内存;使用top命令可以实时监控系统的内存使用情况;使用ps命令可以查看进程的内存使用情况;使用sar命令可以统计系统内存的历史使用情况;使用vmstat命令可以实时显示系统的虚拟内存使用情况。

通过这些方法,我们可以及时了解系统的内存使用情况,从而调整系统的配置或者优化进程的使用,以提高系统的性能和稳定性。

操作系统标签