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

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 [参数]

图片[1]-Linux查看内存使用情况的命令有哪些-不念博客

常用参数

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

演示

free -h

结果

图片[2]-Linux查看内存使用情况的命令有哪些-不念博客
  • -s<间隔秒数>  持续观察内存使用状况演示:每个五秒显示一次
 free -h -s 5

结果

图片[3]-Linux查看内存使用情况的命令有哪些-不念博客

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

2. vmstat 命令

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

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

vmstat -w

结果

procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 1  0            0      3509592         2108       200668    0    0    14     2  116   93   0   2  98   0   0

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

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

图片[4]-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 的总内存

图片[5]-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
图片[6]-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
图片[7]-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 

结果

图片[8]-Linux查看内存使用情况的命令有哪些-不念博客

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

© 版权声明
THE END