Linux系统命令 - 查看内存使用情况

news/2024/11/17 11:02:18/

一、 查看内存使用情况

在Linux系统中,大部分操作都通过命令行来完成,因为大部分情况下不开启图形界面。
在服务器环境,则只能通过shell执行操作。
下面介绍查看内存使用情况的相关命令。 包括物理内存(RAM)和交换内存(swap)。

我们经常需要检查服务器的内存使用情况,以及每个进程占用的内存,避免发生资源短缺进而影响用户体验。
对于网站和Web服务,必须具有足够的内存才能处理客户端请求。 如果内存不足,在请求高峰时就会变得缓慢,拥堵,甚至服务崩溃。
当然桌面系统也是同样的道理。

1. 使用 free 命令

free 命令是Linux系统中最简单和最常用的内存查看命令, 示例如下:


$ free -mtotal        used        free      shared  buff/cache   available
Mem:           7822         321         324         377        7175        6795
Swap:          4096           0        4095$ free -htotal        used        free      shared  buff/cache   available
Mem:           7.6G        322M        324M        377M        7.0G        6.6G
Swap:          4.0G        724K        4.0G

其中, -m 选项是以MB为单位来展示内存使用信息; -h 选项则是以人类(human)可读的单位来展示。

上面的示例中, Mem: 这一行:

  • total 表示总共有 7822MB 的物理内存(RAM),即7.6G
  • used 表示物理内存的使用量,大约是 322M
  • free 表示空闲内存;
  • shared 表示共享内存?;
  • buff/cache 表示缓存和缓冲内存量; Linux 系统会将很多东西缓存起来以提高性能,这部分内存可以在必要时进行释放,给其他程序使用。
  • available 表示可用内存;

输出结果很容易理解。 Swap 这一行表示交换内存,从示例中的数字可以看到,基本上没使用到交换内存。

2. 查看 /proc/meminfo

另一种方法是读取 /proc/meminfo 文件。 我们知道, /proc 目录下都是虚拟文件,包含内核以及操作系统相关的动态信息。

$ cat /proc/meminfo
MemTotal:        8010408 kB
MemFree:          323424 kB
MemAvailable:    6956280 kB
Buffers:          719620 kB
Cached:          5817644 kB
SwapCached:          132 kB
Active:          5415824 kB
Inactive:        1369528 kB
Active(anon):     385660 kB
Inactive(anon):   249292 kB
Active(file):    5030164 kB
Inactive(file):  1120236 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194304 kB
SwapFree:        4193580 kB
Dirty:                60 kB
Writeback:             0 kB
AnonPages:        247888 kB
Mapped:            61728 kB
Shmem:            386864 kB
Slab:             818320 kB
SReclaimable:     788436 kB
SUnreclaim:        29884 kB
KernelStack:        2848 kB
PageTables:         5780 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8199508 kB
Committed_AS:     942596 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       22528 kB
VmallocChunk:   34359707388 kB
HardwareCorrupted:     0 kB
AnonHugePages:     88064 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      176000 kB
DirectMap2M:     6115328 kB
DirectMap1G:     4194304 kB

重点关注这些数据:

  • MemTotal, 总内存
  • MemFree, 空闲内存
  • MemAvailable, 可用内存
  • Buffers, 缓冲
  • Cached, 缓存
  • SwapTotal, 交换内存
  • SwapFree, 空闲交换内存

提供的信息和 free 命令看到的差不多。

3. 使用 vmstat 命令

使用 vmstat -s 命令和选项, 可以对内存使用情况进行统计, 类似于 /proc/meminfo

示例如下:

$ vmstat -s8010408 K total memory344016 K used memory5444384 K active memory1380052 K inactive memory283468 K free memory719668 K buffer memory6663256 K swap cache4194304 K total swap724 K used swap4193580 K free swap132859985 non-nice user cpu ticks29816 nice user cpu ticks37600986 system cpu ticks6643195204 idle cpu ticks2721822 IO-wait cpu ticks0 IRQ cpu ticks592418 softirq cpu ticks0 stolen cpu ticks13092214 pages paged in293257816 pages paged out8 pages swapped in1365 pages swapped out3396492150 interrupts1327657196 CPU context switches1548248091 boot time8811556 forks

最前面的几行,显示了内存总量,使用量,以及空闲内存等信息。

4. 使用 top 命令

top 命令一般用于查看进程的CPU和内存使用情况;当然也会报告内存总量,以及内存使用情况,所以可用来监控物理内存的使用情况。
在输出信息的顶部展示了汇总信息。

示例输出:

top - 15:20:30 up  6:57,  5 users,  load average: 0.64, 0.44, 0.33
Tasks: 265 total,   1 running, 263 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.8 us,  2.4 sy,  0.0 ni, 88.9 id,  0.9 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   8167848 total,  6642360 used,  1525488 free,  1026876 buffers
KiB Swap:  1998844 total,        0 used,  1998844 free,  2138148 cachedPID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                                 2986 enlighte  20   0  584m  42m  26m S  14.3  0.5   0:44.27 yakuake                                                                                 1305 root      20   0  448m  68m  39m S   5.0  0.9   3:33.98 Xorg                                                                                    7701 enlighte  20   0  424m  17m  10m S   4.0  0.2   0:00.12 kio_thumbnail

各种操作系统提供的参数略有不同,一般来说都可以根据CPU和内存来排序。

例如:

# CentOS
top -o %MEM
top -o %CPU# mac
top -o mem
top -o cpu

碰到不清楚的,请使用 top -h 查看帮助信息。

重点关注顶部的 KiB MemKiB Swap 这两行。 表示内存的总量、使用量,以及可用量。
buffer 和 cache 部分,和 free 命令展示的差不多。

5. htop 命令

top 命令类似, 但 htop 还展示了其他的各种信息, 而且支持彩色显示。

在这里插入图片描述

顶部的消息显示了CPU使用率, 以及RAM和交换内存的使用情况。

如果没安装,可以使用类似的命令:

yum install htop -y

二、 查看物理内存信息

想要查看物理内存的硬件信息,可以使用 demidecode 命令。
这个命令会输出物理内存相关的信息。

$ dmidecode -t 17# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.Handle 0x1100, DMI type 17, 40 bytes
Memory DeviceArray Handle: 0x1000Error Information Handle: Not ProvidedTotal Width: UnknownData Width: UnknownSize: 8192 MBForm Factor: DIMMSet: NoneLocator: DIMM 0Bank Locator: Not SpecifiedType: RAMType Detail: OtherSpeed: UnknownManufacturer: Alibaba CloudSerial Number: Not SpecifiedAsset Tag: Not SpecifiedPart Number: Not SpecifiedRank: UnknownConfigured Clock Speed: UnknownMinimum Voltage: UnknownMaximum Voltage: UnknownConfigured Voltage: Unknown

dmidecode -t 17 展示的信息包括 内存大小, 类型,带宽等信息。 当然,因为示例中使用的是虚拟机,所以有的信息是不可用的。

如果不加 -t 参数,则展示所有类型的硬件信息。 也可以指定其他 -t 参数来查看对应的硬件信息。

小结

本文介绍的命令都可以在shell终端上执行,不需要图形界面来展示。
如果使用带有图形界面的Linux桌面系统,则使用图形工具会更直观。 一般来说图形桌面都会提供对应的系统监控工具。 输出容易理解的 cpu, 物理内存, 交换内存, 网络带宽等资源的使用信息。

相关链接

  • https://www.binarytides.com/linux-command-check-memory-usage/
  • http://virtualthreads.blogspot.com/2006/02/understanding-memory-usage-on-linux.html

http://www.ppmy.cn/news/750011.html

相关文章

linux如何查看内存命令

cat /proc/meminfo ree命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述 如何判断系统内存不足:如果Swap used值大于0,代表服务器物理内存已经遇到内存瓶颈了,已开始使用虚拟内存了&#xff0c…

Linux下快速查看CPU使用情况的相关命令

Linux下快速查看CPU使用情况比较常用的命令是free、top、ps。这篇文章来看下如何在Linux下检查服务器的CPU使用情况。我的Linux是Linux-Ubuntu-server-15.04,如果是图形界面,有些统计会看起来更直观。 1.free free命令是一个快速查看内存使用情况的方…

MFC管理系统

文章目录 登录设置登录界面登录用户判断 界面设计嵌入对话框 添加列表添加员工添加按钮 完成添加员工删除员工修改员工信息修改 完成修改员工保存数据打开时显示读取内容全部代码 登录 设置登录界面 初始化窗口实列 添加控件变量 登录用户判断 void CLoginDlg::OnBnClickedB…

JS中 PageX、clientX、offsetX、layerX、offsetTop、offsetWidth各位置属性详解

一.PageX和clientX PageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化 pageX 200 clientX:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始, 即是以浏览器滑动条此刻的滑动到的位置为参考点,随滑动条移而变化. 比如原先高度是200&…

电脑权限设置在哪里

点击你桌面上“我的电脑”图标--右键“管理”--“本地用户和组”--“用户”。 在这里你会看到你所有的账户信息。点击你的账户,比如你新建了一个叫KK的账户,那么:点击KK,右键“属性”--“隶属于”--“添加”--“Administrators”。…

mac修改权限命令

1.mac的sodu命令可以获得root权限,也就是系统的超级使用者. 2.chown 修改目录所属用户及权限。 例如:chown -R $(whoami) npm/lib/node_moudles 修改npm命令的所属用户为当前用户 3.mac 安装vue处理用户权限问题:sudo chown -R $(whoami) $(npm co…

Mac 权限设置

终端输入sudo spctl --master-disable命令,可在安全性和隐私看到允许任何来源

如何管理Mac的隐私权限控制

在使用MAC电脑清理软件的时候,经常会出现需要权限问题,在没有权限的情况下,我们不能对一些文件进行更改和删除,那么该如何管理Mac的隐私权限控制呢?下面的文章就来告诉大家该如何设置隐身权限问题。 第一步&#xff1…