首页 > 文章列表 > Linux系统中查看内存使用情况的命令包括:

Linux系统中查看内存使用情况的命令包括:

linux 操作系统 工程师
424 2024-03-25

Linux是一种基于UNIX操作系统的开源操作系统内核。

由于其开源性,它可以在各种硬件平台上运行,并且具有良好的可定制性和扩展性。

Linux内核由Linus Torvalds于1991年首次发布,并随后得到全球开发者社区的广泛参与和贡献。

公司要求java工程师要会Linux

为什么公司要求java工程师会Linux操作系统的相关知识呢?

  • 部署和运行环境
  • 服务端开发和调试
  • 自动化部署与持续集成
  • 性能优化和故障排除
  • 与其他服务的集成

企业要求JavaEE开发工程师掌握Linux知识主要是为了优化服务器环境、提升开发效率、确保应用程序性能稳定,并实现与其他服务的集成。

掌握Linux操作系统的技能可以使JavaEE开发工程师更具竞争力,并在现实工作中更加得心应手。

Linux服务器实际上就是一台机器,因此在shell脚本中常见的任务之一是检查机器的总内存大小或使用内存统计。

本文将通过使用多个有用的命令和工具,采用不同的方法来达到这一目的。

1. free命令

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。

在Linux系统监控的工具中,free命令是最经常使用的命令之一。

命令格式:

free [参数]

Linux查看内存使用情况的命令有哪些

常用参数

  • -h: 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有
B = bytes
K = kilos
M = megas
G = gigas
T = teras

演示

free -h

结果

Linux查看内存使用情况的命令有哪些

  • -s<间隔秒数>  持续观察内存使用状况演示:每个五秒显示一次
 free -h -s 5

结果

Linux查看内存使用情况的命令有哪些

可以使用 Ctrl + C 键盘快捷键轻松终止该过程

2. vmstat 命令

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写类似于free命令,vmstat可对操作系统的虚拟内存、进程、CPU活动进行监控。

它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析

vmstat -w

结果

procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 rb swpd free buffcache si sobibo in csussyidwast
 1003509592 2108 2006680014 2116 93 0 298 0 0

-w,–wide output参数用于调整命令输出结果的显示方式。

输出的结果和单独执行vmstat命令得到的结果完全一样,只是在输出时,会以更宽的宽度来展示数据命令显示字段含义(vmstat不加-参数)

Linux查看内存使用情况的命令有哪些

vmstat -s

结果

 3865308 K total memory
 152744 K used memory
 121800 K active memory
84996 K inactive memory
3509652 K free memory
 2108 K buffer memory
 200804 K swap cache
4063228 K total swap
0 K used swap
4063228 K free swap
 3681 non-nice user cpu ticks
0 nice user cpu ticks
16512 system cpu ticks
1046086 idle cpu ticks
 96 IO-wait cpu ticks
0 IRQ cpu ticks
634 softirq cpu ticks
0 stolen cpu ticks
 141780 pages paged in
25244 pages paged out
0 pages swapped in
0 pages swapped out
1230293 interrupts
 983789 CPU context switches
 1705671832 boot time
51599 forks

输出中的第一个条目是总物理内存。有时,我们不需要所有信息,因此我们可以使用 grep 仅提取所需的条目

vmstat -s | grep -i 'total memory' | sed 's/ *//'

结果

3865308 K total memory

3. top命令

Top命令是 Linux 系统中一个常用的性能分析和监控工具,它可以实时展示系统中各个进程的资源占用状况。

它的作用与 Windows 系统中的任务管理器相似。

top

我们可以看到 Mem 字段旁边的内存信息,并观察到我们总共有 3865308kb 的总内存

Linux查看内存使用情况的命令有哪些

4. dmidecode实用工具

dmidecode是一个用于获取计算机系统中各种硬件信息的实用程序

4.1. 安装 dmidecode

对于基于 Ubuntu 的发行版,我们可以通过 apt 安装软件包:

apt install dmidecode

对于 RHEL、Fedora 和 CentOS,我们可以使用 yum

yum install dmidecode -y

命令

dmidecode

运行dmidecode命令之后,屏幕会输出大量记录,可以使用less分页查看,每个记录有4个不同的值:

dmidecode less

SMBIOS规范定义了以下DMI类型:

Type Information
────────────────────────────────────────────
 0 BIOS
 1 System
 2 Baseboard
 3 Chassis
 4 Processor
 5 Memory Controller
 6 Memory Module
 7 Cache
 8 Port Connector
 9 System Slots
10 On Board Devices
11 OEM Strings
12 System Configuration Options
13 BIOS Language
14 Group Associations
15 System Event Log
16 Physical Memory Array
17 Memory Device
18 32-bit Memory Error
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-band Remote Access
31 Boot Integrity Services
32 System Boot
33 64-bit Memory Error
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device
39 Power Supply
40 Additional Information
41 Onboard Devices Extended Information
42 Management Controller Host Interface

假如我们想看看内存 DMI 类型,可以使用分配的数字 5、6、16、17、18、19、20、21 和 22 访问。

dmidecode --type 19

Linux查看内存使用情况的命令有哪些

看到内存总大小为8 GB

以下是dmidecode的一些常用选项和功能:

  • 查看产品名称:可以通过dmidecode | grep "Product Name"来获取当前连接的主板的“产品名称”。
  • 查看系统序列号:可以使用dmidecode -s system-serial-number来获得服务器的系统序列号。
  • 查看内存信息:通过dmidecode -t memory可以获得电脑中各个内存插槽的信息。
  • 查看OEM信息:如果需要了解制造商信息,可以使用dmidecode -t OEM,但这个选项可能不再常见。
  • 查看处理器信息:如果想要获取处理器的详细信息,可以使用dmidecode -t processor

5. /proc/meminfo虚拟文件

proc文件系统中的 meminfo文件包含关于系统对内存使用情况的信息。

free命令就是读取这个文件来呈现当前系统包含物理内存和SWAP内存在内的空闲内存和已使用内存

使用cat命令读取/proc/meminfo文件,我们可以获取内存信息

cat /proc/meminfo

Linux查看内存使用情况的命令有哪些

假如要读取文件前三行?

cat /proc/meminfo | head -n 3
MemTotal:3865308 kB总内存
MemFree: 3474652 kB空闲内存
MemAvailable:3435164 kB

思考:假设我们正在编写一个 Bash 脚本,我们需要在其中处理物理内存大小,需要怎么做?

#!/bin/bash

total_ram () {
local totalram=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*')
echo $totalram
}

ram_size=$(total_ram)
echo "Total RAM: $ram_size kB"

现在,让我们保存脚本并使其可执行:

chmod +755 totalram.sh

 ./totalram.sh 

结果

Linux查看内存使用情况的命令有哪些

在Linux中,通过free、vmstat、top、dmidecode和/proc/meminfo等工具和文件,使我们可以全面了解服务器的总内存大小。