在终端下查看linux内存使用情况的5个命令

陪她去流浪 桃子 2015年04月08日 阅读次数:4190

内存使用

在linux系统上,命令几乎可以做任何事,因为GUI并不总是可用。比如工作在服务器上,你就只能通过远程连接并使用命令来完成该完成的事务。所以今天我们就来谈谈可以在linux系统上检测内存使用情况的命令。这里所说的内存包括 RAM 和 SWAP。

时时检测服务器的内存使用情况和每个进程的所使用的内存总是很重要的,这样可以避免因为内存短缺而导致远程用户无法连接到服务器的问题。比如说你正在运行一个网站,那么web服务器一定要有足够的内存才能服务来访者。如果内存无法满足,就可能导致网站访问速度异常缓慢,甚至可能崩溃。

1、free

free命令可能是最为简单,也是最易于使用的命令了!下面看看效果:

root@twofei:~# free -m
             total       used       free     shared    buffers     cached
Mem:           488        469         19         42         59        212
-/+ buffers/cache:        197        290
Swap:            0          0          0

选项 m 表示以 兆字节 的方式显示结果。total栏表示安装在系统上的所有内存的大小;used栏表示linux系统当前已经使用了多少内存;free栏表示当前剩余量;shared表示在进程之间已共享的内存量;buffuers和cached是linux系统为提高性能而采取的缓冲区以及缓存措施。

第1行:系统总共有内存488M,真正未使用的有19M,已经使用的+缓冲区+缓存用了469M(包括共享)。

第2行:系统真正正在使用的有197M,剩余290M未使用(这包括:真正未使用的19M + 缓存区59M + 缓存212M)。

第3行:这就是交换分区了,不懂?Google之。

2、/proc/meminfo

另一种检测内存的方式是读取 /proc/meminfo 文件。要明白的是: /proc 文件系统并不包含真正的文件,它们只是包含内核和系统动态信息的一些虚拟文件。

root@twofei:~# cat /proc/meminfo
MemTotal:         500192 kB
MemFree:           18720 kB
Buffers:           61168 kB
Cached:           217412 kB
SwapCached:            0 kB
Active:           251004 kB
Inactive:         137696 kB
Active(anon):     134240 kB
Inactive(anon):    19844 kB
Active(file):     116764 kB
Inactive(file):   117852 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        110148 kB
Mapped:            57144 kB
Shmem:             43964 kB
Slab:              74888 kB
SReclaimable:      62956 kB
SUnreclaim:        11932 kB
KernelStack:        1432 kB
PageTables:         5144 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      250096 kB
Committed_AS:     765100 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        3512 kB
VmallocChunk:   34359729996 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       40960 kB
DirectMap2M:      614400 kB

留意一下:MemTotal,MemFree,Buffers,Cached,SwapTotal,SwapFree的值,它们跟前面free命令的结果应该是一样的。

3、vmstat

带 s 选项的 vmstat 命令可以列出与 proc 命令非常类似的内存使用数据。

root@twofei:~# vmstat -s
       500192 K total memory
       481940 K used memory
       251168 K active memory
       138020 K inactive memory
        18252 K free memory
        61456 K buffer memory
       217464 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
       317148 non-nice user cpu ticks
          599 nice user cpu ticks
       296061 system cpu ticks
     79095815 idle cpu ticks
        37382 IO-wait cpu ticks
       264913 IRQ cpu ticks
            0 softirq cpu ticks
       108455 stolen cpu ticks
      1991274 pages paged in
      2326328 pages paged out
            0 pages swapped in
            0 pages swapped out
    344055107 interrupts
    254547855 CPU context switches
   1425967580 boot time
       252880 forks

最上面的几行展示了总内存,空闲内存,等等。

4、top

top 命令通常用于检测每个进程的内存和CPU使用情况。但是,它同样也报告了总共内存使用量,并且还可以用于监视RAM的使用情况,因为它会不断地刷新以显示最新信息。

Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.8 hi,  0.0 si,  0.0 st
KiB Mem:    500192 total,   482416 used,    17776 free,    61544 buffers
KiB Swap:        0 total,        0 used,        0 free.   217464 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
24102 root      20   0  103776   4320   3260 S  0.8  0.9   0:00.16 sshd
26360 root      20   0   24924   1580   1120 R  0.8  0.3   0:00.02 top
    1 root      20   0   33472   1972    612 S  0.0  0.4   0:01.13 init
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:03.00 ksoftirqd/0

5、htop

htop 命令和 top 差得不是很多,只是结果是 彩色的,而已?

RAM 硬件信息

要了解已安装的RAM的硬件信息,得使用 dmidecode 命令。

root@twofei:~# dmidecode
# dmidecode 2.12
SMBIOS 2.4 present.
10 structures occupying 290 bytes.
Table at 0x000EB01F.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: Xen
        Version: 4.0.1
        Release Date: 12/16/2014
        Address: 0xE8000
        Runtime Size: 96 kB
        ROM Size: 64 kB
        Characteristics:
                PCI is supported
                EDD is supported
                Targeted content distribution is supported
        BIOS Revision: 4.0

Handle 0x0100, DMI type 1, 27 bytes
System Information
        Manufacturer: Xen
        Product Name: HVM domU
        Version: 4.0.1
        Serial Number: b4684787-71c2-46a1-8fe1-482d7f448e40
        UUID: B4684787-71C2-46A1-8FE1-482D7F448E40
        Wake-up Type: Power Switch
        SKU Number: Not Specified
        Family: Not Specified

Handle 0x0300, DMI type 3, 13 bytes
Chassis Information
        Manufacturer: Xen
        Type: Other
        Lock: Not Present
        Version: Not Specified
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: Unknown

Handle 0x0401, DMI type 4, 26 bytes
Processor Information
        Socket Designation: CPU 1
        Type: Central Processor
        Family: Other
        Manufacturer: Intel
        ID: E4 06 03 00 FF FB 89 17
        Version: Not Specified
        Voltage: Unknown
        External Clock: Unknown
        Max Speed: 2600 MHz
        Current Speed: 2600 MHz
        Status: Populated, Enabled
        Upgrade: Other

Handle 0x1000, DMI type 16, 15 bytes
Physical Memory Array
        Location: Other
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 512 MB
        Error Information Handle: Not Provided
        Number Of Devices: 1

Handle 0x1100, DMI type 17, 21 bytes
Memory Device
        Array Handle: 0x1000
        Error Information Handle: 0x0000
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 512 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM 0
        Bank Locator: Not Specified
        Type: RAM
        Type Detail: None

Handle 0x1300, DMI type 19, 15 bytes
Memory Array Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x0001FFFFFFF
        Range Size: 512 MB
        Physical Array Handle: 0x1000
        Partition Width: 1

Handle 0x1400, DMI type 20, 19 bytes
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x0001FFFFFFF
        Range Size: 512 MB
        Physical Device Handle: 0x1100
        Memory Array Mapped Address Handle: 0x1300
        Partition Row Position: 1

Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
        Status: No errors detected

Handle 0x7F00, DMI type 127, 4 bytes
End Of Table

总结

使用上面提到的命令都是在终端上工作的,都没有GUI。如果使用的是桌面系统,那么,在 gnome 桌面上可以使用 gnonme-system-monitor 工具,在 KDE桌面上则可以使用 ksysguard 工具。它们两者都提供了以图形方式显示CPU、RAM、SWAP、Network的资源使用情况,可以很轻松地了解系统情况。

外部链接

本文译自:5 commands to check memory usage on Linux

这篇文章的内容已被作者标记为“过时”/“需要更新”/“不具参考意义”。

标签:linux · 内存管理 · 总结