在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
- 每天一个linux命令(45):free 命令;
- 5 commands to check memory usage on Linux;
- 查看Linux磁盘及内存占用情况;
- htop使用详解;
- 如何在Linux上查看RAM信息;
- Linux下查看某一进程所占用内存的方法;
- 正确计算linux系统内存使用率;
最新评论
我的是ipv4网络,如何使用直播源啊!
我今天试了,不想啊,我的是新疆昌吉移动的网络。
收不到验证码电报
现在充值29起了