优米格
分享有营养的

Linux如何查看磁盘/内存利用情况的最全方式

BraUndress.png

在linux上,几乎所有命令都有,因为gui可能并不总是可用。在服务器上工作时,仅可使用shell访问,并且必须通过这些命令完成所有操作。这里介绍可用于检查linux系统上的内存使用情况的命令。内存包括RAM和交换空间swap。

一、查看磁盘

1.df命令

1)df -k:以KB为单位显示磁盘使用量和占用率;

2)df -m:以MB为单位显示磁盘使用量和占用率;

3)df -h:以GB为单位显示磁盘使用量和占用率;

示例:

[winbert@winbert-server ~]$ df -m 
Filesystem              1M-blocks  Used Available Use% Mounted on
/dev/mapper/centos-root     29674  1614     28060   6% /
devtmpfs                      908     0       908   0% /dev
tmpfs                         920     0       920   0% /dev/shm
tmpfs                         920     9       911   1% /run
tmpfs                         920     0       920   0% /sys/fs/cgroup
/dev/sda1                    1014   142       873  14% /boot
tmpfs                         184     0       184   0% /run/user/1000

更多用法,使用df --help

二、查看内存

1.free命令

1)free -k:以KB为单位显示内存使用情况;

2)free -m:以MB为单位显示内存使用情况;

3)free -h:以GB为单位显示内存使用情况;

示例:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7976       6459       1517          0        865       2248
-/+ buffers/cache:       3344       4631
Swap:         1951          0       1951
  • -m选项:表示以“MB”为单位展示;
  • total : 总计物理内存的大小;
  • used : 已使用多大;
  • free : 可用有多少;
  • shared : 多个进程共享的内存总额;
  • buffers/cached : 磁盘缓存的大小;

注意:

(Mem)的 used/free与(-/+ buffers/cache) used/free的区别:
这两者的区别在于使用的角度来看,前者是从OS(Operating Sys)的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是1517MB,已用内存是6459MB。后者所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached

2./proc/meminfo

另外一种检查内存使用情况的方法是查看/proc/meminfo文件。你要知道/proc文件系统中不包含真实文件。它相当于是保存内核和系统动态信息的虚拟文件。

$ cat /proc/meminfo
MemTotal:        8167848 kB
MemFree:         1409696 kB
Buffers:          961452 kB
Cached:          2347236 kB
SwapCached:            0 kB
Active:          3124752 kB
Inactive:        2781308 kB
Active(anon):    2603376 kB
Inactive(anon):   309056 kB
Active(file):     521376 kB
Inactive(file):  2472252 kB
Unevictable:        5864 kB
Mlocked:            5880 kB
SwapTotal:       1998844 kB
SwapFree:        1998844 kB
Dirty:              7180 kB
Writeback:             0 kB
AnonPages:       2603272 kB
Mapped:           788380 kB
Shmem:            311596 kB
Slab:             200468 kB
SReclaimable:     151760 kB
SUnreclaim:        48708 kB
KernelStack:        6488 kB
PageTables:        78592 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6082768 kB
Committed_AS:    9397536 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      420204 kB
VmallocChunk:   34359311104 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB                                                                                                                           
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       62464 kB
DirectMap2M:     8316928 kB

观察MemTotal, MemFree, Buffers, Cached, SwapTotal, SwapFree变量的值。它们和前面的free命令一样指示内存属性值。但是通过这种方式,你只能看到内存的总量和使用量。而无法知道内存的类型(DDR1、DDR2、DDR3、DDR4、SDRAM、DRAM)、频率等信息。要获取这些信息,你需要借助dmidecode命令。

3.vmstat

vmstat命令的s选项,展示出内存利用分析情况,和proc command很类似。

$ vmstat -s
      8167848 K total memory
      7449376 K used memory
      3423872 K active memory
      3140312 K inactive memory
       718472 K free memory
      1154464 K buffer memory
      2422876 K swap cache
      1998844 K total swap
            0 K used swap
      1998844 K free swap
       392650 non-nice user cpu ticks
         8073 nice user cpu ticks
        83959 system cpu ticks
     10448341 idle cpu ticks
        91904 IO-wait cpu ticks
            0 IRQ cpu ticks
         2189 softirq cpu ticks
            0 stolen cpu ticks
      2042603 pages paged in
      2614057 pages paged out
            0 pages swapped in
            0 pages swapped out
     42301605 interrupts
     94581566 CPU context switches
   1382755972 boot time
         8567 forks
$

4.top命令

top命令通常用户检查各进程的内存利用情况。但是,它还会报告总内存使用情况,并可用于监视总RAM使用情况。输出头具有所需的信息。这是输出示例:

[winbert@winbert-server ~]$ top
top - 23:02:28 up 5 min,  1 user,  load average: 0.02, 0.14, 0.09
Tasks:  92 total,   2 running,  90 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
KiB Mem :  1882836 total,  1404176 free,   197816 used,   280844 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1510108 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                    
 1683 winbert   20   0  161944   2188   1540 R  1.0  0.1   0:01.29 top                                                                                                                        
   22 root      20   0       0      0      0 S  0.3  0.0   0:00.20 kworker/0:1                                                                                                                
  393 root      20   0       0      0      0 S  0.3  0.0   0:00.19 xfsaild/dm-0                                                                                                               
    1 root      20   0  128012   6580   4164 S  0.0  0.3   0:03.33 systemd                                                                                                                    
    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:00.11 ksoftirqd/0                                                                                                                
    4 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0     

如果查看某一应用程序的内存占用,可以使用top -p pid指定对应该应用程序的pid即可。

5.htop命令

htop相当于top命令的增强版,使用:

winbert@winbert-server ~]$ htop

6.dmidecode命令

查看RAM的相关硬件信息,可以使用dmidecode命令。它包含了很多安装RAM内存信息。

[winbert@winbert ~]$ sudo dmidecode -t 17
[sudo] password for winbert: 
Sorry, try again.
[sudo] password for winbert: 
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.

Handle 0x1100, DMI type 17, 40 bytes
Memory Device
    Array Handle: 0x1000
    Error Information Handle: Not Provided
    Total Width: Unknown
    Data Width: Unknown
    Size: 2066 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM 0
    Bank Locator: Not Specified
    Type: DDR2
    Type Detail: Synchronous
    Speed: 667 MHz
    Manufacturer: Red Hat
    Serial Number: 0xFFFFFFFF
    Asset Tag: Not Specified
    Part Number: Not Specified
    Rank: Unknown
    Configured Clock Speed: Unknown
    Minimum Voltage: Unknown
    Maximum Voltage: Unknown
    Configured Voltage: Unknown

其中参数17表示:你想分析的DMI的类型,这里指Memory Device;提供的信息包括大小(2066 MB),类型(DDR2),速度(667 MHz)。

References

  1. 每天一个linux命令(45):free 命令
  2. 5 commands to check memory usage on Linux
  3. 查看Linux磁盘及内存占用情况
  4. htop使用详解
  5. 如何在Linux上查看RAM信息
  6. Linux下查看某一进程所占用内存的方法
  7. 正确计算linux系统内存使用率
赞(0)
未经允许禁止转载:优米格 » Linux如何查看磁盘/内存利用情况的最全方式

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系