Linux下查询内存使用情况的常用命令

孤街浪徒 提交于 2020-05-02 00:32:13

1、free命令

  free 命令会显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存等。

$ free
              total        used        free      shared  buff/cache   available
Mem:       32946324     2489392    11422656     1622872    19034276    28352888
Swap:             0           0           0

释义:

  Mem:内存使用情况。

  Swap:交换空间(虚拟内存)使用情况。

  total:系统总共可用物理内存、交换空间大小。

  used:已经被使用的物理内存、交换空间大小。

  free:剩余可用物理内存、交换空间大小。

  shared:被共享使用的物理内存大小。

  buff/cache:被 buffer 和 cache 使用的物理内存大小。

  available:还可以被应用程序使用的物理内存大小。

常见用法:

free -h      //以更友好的方式显示,会以K、M、G为单位来显示
free -h -s 3   //以一定时间间隔重复的输出,这个命令是每3秒输出一次

  free 命令中的信息都来自于 /proc/meminfo 文件。

2、vmstat命令

  vmstat 是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控,是对系统的整体情况进行的统计。

$ vmstat
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  14376368 161976 1130836   0    0    0   3    2    2     0  0 100 0  0

  与内存使用情况相关的是memory列和swap列,我们只看这两列。

memory列

  swpd:使用的虚拟内存大小。

  free:空闲物理内存大小。

  buff:buffer cache内存大小。

  cache:page cache的内存大小。

swap列

  si:每秒从交换区读入到内存的大小,由磁盘调入内存(单位:kb/s)

  so:每秒从内存写出到交换区的大小,由内存调入磁盘(单位:kb/s)

常见用法:

vmstat 1    //每隔1s打印一次
vmstat 1 5   //每隔1秒打印一次,打印五次
vmstat -s    //显示内存相关统计信息及多种系统活动数量

3、top命令

  使用top命令,可以查看正在运行的进程和系统负载信息,包括cpu负载、内存使用、各个进程所占系统资源等,top命令以一定频率动态更新这些统计信息。

top - 10:45:21 up 211 days, 17:14,  2 users,  load average: 0.08, 0.09, 0.03
Tasks: 228 total,   1 running, 227 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.4%us,  0.1%sy,  0.1%ni, 99.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32880232k total, 22032060k used, 10848172k free,   569680k buffers
Swap:        0k total,        0k used,        0k free, 17771208k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                               
 9757 root      20   0 15160 1224  836 R  2.0  0.0   0:00.01 top                                                                                                    
    1 root      20   0 19364 1644 1312 S  0.0  0.0   2:06.03 init                                                                                                   
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.30 kthreadd                                                                                               
    3 root      RT   0     0    0    0 S  0.0  0.0   0:02.75 migration/0                                                                                            
    4 root      20   0     0    0    0 S  0.0  0.0   2:04.41 ksoftirqd/0                                                                                            
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                                                              
    6 root      RT   0     0    0    0 S  0.0  0.0   0:39.92 watchdog/0                                                                                             
    7 root      RT   0     0    0    0 S  0.0  0.0   0:01.44 migration/1                                                                                            
    8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/1                                                                                              
    9 root      20   0     0    0    0 S  0.0  0.0   1:23.26 ksoftirqd/1                                                                                            
   10 root      RT   0     0    0    0 S  0.0  0.0   0:31.05 watchdog/1                                                                                             
   11 root      RT   0     0    0    0 S  0.0  0.0   0:02.06 migration/2                                                                                            
   12 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/2                                                                                              
   13 root      20   0     0    0    0 S  0.0  0.0   0:45.78 ksoftirqd/2                                                                                            
   14 root      RT   0     0    0    0 S  0.0  0.0   0:29.91 watchdog/2                                                                                             
   15 root      RT   0     0    0    0 S  0.0  0.0   0:10.61 migration/3                                                                                            
   16 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/3                                                                                              
   17 root      20   0     0    0    0 S  0.0  0.0   1:57.03 ksoftirqd/3                                                                                            
   18 root      RT   0     0    0    0 S  0.0  0.0   0:32.77 watchdog/3                                                                                             
   19 root      RT   0     0    0    0 S  0.0  0.0   0:01.82 migration/4                                                                                            
   20 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/4                                                                                              
   21 root      20   0     0    0    0 S  0.0  0.0   1:58.64 ksoftirqd/4                                                                                            
   22 root      RT   0     0    0    0 S  0.0  0.0   0:32.96 watchdog/4                                                                                             
   23 root      RT   0     0    0    0 S  0.0  0.0   0:03.28 migration/5                                                                                            
   24 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/5                                                                                              
   25 root      20   0     0    0    0 S  0.0  0.0   0:50.67 ksoftirqd/5                                                                                            
   26 root      RT   0     0    0    0 S  0.0  0.0   0:30.28 watchdog/5                                                                                             
   27 root      RT   0     0    0    0 S  0.0  0.0   0:06.60 migration/6                                                                                            
   28 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/6

   反映系统内存使用状况的是下面这两行:

Mem:  32880232k total, 22032060k used, 10848172k free,   569680k buffers
Swap:        0k total,        0k used,        0k free, 17771208k cached

  Mem行是物理内存使用情况,分别是:物理内存总量,已使用的物理内存总量,空闲物理内存总量,用作内核缓存区的内存量。

  Swap行是交换区使用情况,分别是:交换区总量,已使用的交换区总量,空闲交换区总量,缓冲的交换区总量。

  

  Top命令的下侧区域显示的是各个进程使用的系统资源统计信息,内存相关列如下:

  • VIRT列:进程使用的虚拟内存总量,单位kb。
  • RES列:进程使用的、未被换出的物理内存大小,单位kb。
  • SHR列:共享内存大小,单位kb。
  • %MEM 列:进程使用的物理内存百分比。

4、cat /proc/meminfo

  /proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”free”、”vmstat”等命令就是通过它获取数据的。/proc/meminfo所包含的信息比”free”等命令要丰富得多,但也很复杂,不再一一解释了。感兴趣的话可以看看这篇文章:http://linuxperf.com/?p=142,对 /proc/meminfo 有较详细的解释。

$ cat /proc/meminfo
MemTotal:       16430636 kB
MemFree:        14376492 kB
MemAvailable:   15298732 kB
Buffers:          161976 kB
Cached:          1022440 kB
SwapCached:            0 kB
Active:          1369780 kB
Inactive:         438696 kB
Active(anon):     624376 kB
Inactive(anon):    49444 kB
Active(file):     745404 kB
Inactive(file):   389252 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                60 kB
Writeback:             0 kB
AnonPages:        624068 kB
Mapped:            88140 kB
Shmem:             49752 kB
Slab:             108076 kB
SReclaimable:      82864 kB
SUnreclaim:        25212 kB
KernelStack:        4464 kB
PageTables:        10480 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8215316 kB
Committed_AS:    1811204 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       34780 kB
VmallocChunk:   34359695100 kB
HardwareCorrupted:     0 kB
AnonHugePages:    182272 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      169832 kB
DirectMap2M:     8218624 kB
DirectMap1G:    10485760 kB

5、 ps aux命令

  ps aux 命令可以查看系统中各个进程的运行情况,包括了进程占用的内存,%MEM 列就是各个进程的内存占用百分比。

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1231  0.9  2.2 1368496 375824 ?      SNl  Jun21 346:39 ./bcm-agent
bls       6891  0.1  0.9 2892024 159516 ?      Sl   Jun21  55:29 /opt/bls/lib/jre/bin/java -Duser.language=en_us -Xmx500m -XX:+UseParallelGC -XX:+UseParallelOldGC -
root       389  0.0  0.2  96376 46212 ?        Ss   Jun21   0:14 /usr/lib/systemd/systemd-journald
root      1245  0.0  0.2 1200080 40200 ?       Sl   Jun21  19:48 /opt/hosteye/bin/hosteye --is_child_mode=true --is_console_mode=false --start_mode=0
root      1199  0.0  0.1 288132 28188 ?        Ssl  Jun21   2:06 /usr/sbin/rsyslogd -n
root       898  0.0  0.1 573840 17152 ?        Ssl  Jun21   5:08 /usr/bin/python -Es /usr/sbin/tuned -l -P

 

参考:

https://www.cnblogs.com/ultranms/p/9254160.html

https://www.cnblogs.com/beginner-boy/p/8067130.html

https://www.cnblogs.com/new-journey/p/10524676.html

https://www.cnblogs.com/zhuiluoyu/p/6154898.html

https://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html

https://www.cnblogs.com/jiffies/articles/2106456.html

https://blog.csdn.net/zhuoya_/article/details/81049967

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!