Linux shell编程学习笔记63:free命令 获取内存使用信息

0 前言

在系统安全检查中,内存使用情况也是一块可以关注的内容。Linux提供了多个获取内存信息的命令很多。今天我们先研究free命令。

1 free命令的功能、用法和选项说明

1.1 free命令的功能

free 命令可以显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。

[purpleendurer @ bash ~] free --help

Usage:
 free [options]

Options:
 -b, --bytes         show output in bytes
 -k, --kilo          show output in kilobytes
 -m, --mega          show output in megabytes
 -g, --giga          show output in gigabytes
     --tera          show output in terabytes
     --peta          show output in petabytes
 -h, --human         show human-readable output
     --si            use powers of 1000 not 1024
 -l, --lohi          show detailed low and high memory statistics
 -t, --total         show total for RAM + swap
 -s N, --seconds N   repeat printing every N seconds
 -c N, --count N     repeat printing N times, then exit
 -w, --wide          wide output

     --help     display this help and exit
 -V, --version  output version information and exit

For more details see free(1).
[purpleendurer @ bash ~] 

1.2 free命令的用法

free [选项]

1.3 选项说明

 

选项说明

-b

--bytes

以字节为单位显示输出

-k

--kilo

以千字节为单位显示输出

-m

--mega

以兆字节为单位输出

-g

--giga

以 GB 为单位输出
--tera以 TB 为单位输出
--peta以 PB 为单位输出

-h

--human

显示人类可读的输出
--si使用 1000 的幂而不是 1024

-l

--lohi

显示详细的低内存和高内存统计信息

-t

--total

显示 RAM + 交换的总计

-s N

--seconds N

每 N 秒重复打印一次

-c N

--count N

重复打印 N 次,然后退出

-w

--wide

宽宽输出
--help显示此助信息并退出

-V

--version

输出版本信息并退出

 2 free命令应用实例

2.1 free

[purpleendurer @ bash ~]free
              total        used        free      shared  buff/cache   available
Mem:        3855940      236804     2051384         360     1567752     3371200
Swap:             0           0           0
[purpleendurer @ bash ~]

 

 

命令返回的信息针对 Mem(内存)和Swap(交换空间)分别显示了6列信息。

Mem(内存)比交内容理解。

swap space (交换空间)是磁盘上的一块区域,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存来使用,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。

再来看6列信息的含义。

第1列 total            :系统总的可用物理内存和交换空间大小。
第2列 used           :已经被系统使用的物理内存和交换空间。
第3列 free             :还有多少物理内存和交换空间可用使用。
第4列 shared        : 显示被共享使用的物理内存大小。
第5列 buff/cache  :被 buffer 和 cache 使用的物理内存大小。
第6列  available   : 可以被应用程序使用的物理内存大小。

buff ( buffer cache),即 "缓冲区"。操作系统中文件系统的最小寻址单元是块,每个块包含一个或多个扇区。当一个块被调入内存时,它要存储在一个缓冲区中。每个缓冲区与一个块对应。缓冲区只是把磁盘上的块直接搬到内存中而不关心块中究竟存放的是什么格式的文件。

cache (page cache),即 "页高速缓存"。页高速缓存是内核实现的磁盘缓存。它通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理内存的访问,来减少对磁盘的 I/O 操作。页高速缓存缓存的是内存页面。缓存中的页来自对普通文件、块设备文件(即 buffer cache 呀)和内存映射文件的读写。

对于系统来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available  = free + buffer + cache

2.2 free -h :显示人类可读的输出

 

[purpleendurer @ bash ~]free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        259M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B
[purpleendurer @ bash ~]

 

 2.3 free -h -s 5:每隔5秒显示一次信息

[purpleendurer @ bash ~]free -h -s 5
              total        used        free      shared  buff/cache   available
Mem:           3.7G        259M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B

              total        used        free      shared  buff/cache   available
Mem:           3.7G        258M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B

              total        used        free      shared  buff/cache   available
Mem:           3.7G        259M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B

              total        used        free      shared  buff/cache   available
Mem:           3.7G        259M        1.9G        360K        1.5G        3.2G
Swap:            0B          0B          0B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/780468.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文1:多模态人类活动识别综述

论文题目:A Review of Multimodal Human Activity Recognition with Special Emphasis on Classification, Applications, Challenges and Future Directions 文献偏旧-2021 1、 专业词汇: Human activity recognition (HAR)-人类活动识别 Wearable …

android中activity与fragment之间的各种跳转

我们以音乐播放、视频播放、用户注册与登录为例【Musicfragment(音乐列表页)、Videofragment(视频列表页)、MusicAvtivity(音乐详情页)、VideoFragment(视频详情页)、LoginActivity&…

时钟资源(参考ug472)

目录 时钟资源(参考ug472)7系列 FPGA 时钟连接差异时钟资源连接关系表时钟资源连接示意图不同时钟区域资源连接图Clock-Capable Inputs介绍布局规则 全局时钟 bufferBUFGCTRL介绍原语参数及端口INIT_OUTPRESELECT_I0/1I0/1CE0/1S0/1IGNORE0/1 真值表时序 BUFGBUFGCE&#xff0c…

日本服务器托管需要注意哪些问题

日本服务器托管是一项涉及多方面因素的重要决策,为了确保托管服务的稳定、高效与安全,企业或个人在托管过程中需要注意以下几个关键问题: 首先,数据中心的基础设施建设标准是决定托管稳定性的关键。这包括数据中心的建筑抗震、抗洪…

单片机关键任务优先级的实现学习

与总体产品联调时,需要各个单机系统严格按照总体要求,进行数据输出,时间的偏差将出现系统异常,控制失败等不稳定情况产生,甚至影响到产品安全。 因此必须确保某些关键任务的优先执行。单片机任务优先级一般有两种方式…

Java 基础知识之 switch 语句和 yield 关键字

传统 switch 语句 传统的 switch 语句我们已经写了一万遍了,以下是一个典型的 switch 语句: int dayOfWeek 3; switch (dayOfWeek) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case…

STM32-I2C

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. I2C通信1.1 I2C通信简介1.2 硬件电路1.3 I2C时序基本单元1.3.1 起始条件和终止条件1.3.2 发送一个字节1.3.3 接收一个字节1.3.4 发送应答和接收应答 1.4 I2C时序1.4.1 指定地址写1.4.2 当前地址读1.4.3 指定地址读…

Java应用系统设计与实现--学生信息管理系统(附解决方案源码)

一、实验目的及要求 1.1实验目的 掌握Java GUI编程技术,了解Swing框架的使用。 掌握MySQL数据库的基本操作,了解如何在Java中连接和操作数据库。 掌握用户权限管理的基本概念和实现方法。 提升综合运用所学知识设计和实现一个完整应用系统的能力…

QThread moveToThread的妙用

官方文档描述 总结就是移动到线程的对象不能有父对象,执行start即起一个线程,示例是将myObject移动到主线程中。QT中这种方式起一个线程是非常简单的。 示例描述以及代码 描述往Communicate线程中频繁添加任务,等任务结束的时候统计计算的结…

【python教程】数据分析——numpy、pandas、matplotlib

【python教程】数据分析——numpy、pandas、matplotlib 文章目录 什么是matplotlib安装matplotlib,画个折线 什么是matplotlib matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 安装matplotlib&…

Node 中基于 Koa 框架的 Web 服务搭建实战

前言 在《Node之Web服务 - 掘金 (juejin.cn)》一文中,我们使用 HTTP 模块构建了后端接口,从而实现了后端服务的开发。可以对此进行进一步优化 http模块代码回顾 const http require("http");const server http.createServer((req, res) > {if (reqUrl.pathna…

【面试八股文】java基础知识

引言 本文是java面试时的一些常见知识点总结归纳和一些拓展,笔者在学习这些内容时,特地整理记录下来,以供大家学习共勉。 一、数据类型 1.1 为什么要设计封装类,Integer和int区别是什么? 使用封装类的目的 对象化:…

阶段三:项目开发---搭建项目前后端系统基础架构:任务13:实现基本的登录功能

任务描述 任务名称: 实现基本的登录功能 知识点: 了解前端Vue项目的基本执行过程 重 点: 构建项目的基本登陆功能 内 容: 通过实现项目的基本登录功能,来了解前端Vue项目的基本执行过程,并完成基…

前端面试题17(js快速检索方法详解)

在前端JavaScript中,快速检索数据通常涉及到数组或对象的搜索。这里我会介绍几种常见的快速检索方法,并提供相应的代码示例。 1. 数组的find和findIndex方法 find: 返回数组中满足条件的第一个元素的值。findIndex: 返回数组中满足条件的第一个元素的索…

基于LSTM的股票价格预测

摘要 本课设旨在利用LSTM(长短期记忆)网络实现股票价格预测,通过收集、预处理股票数据集,并构建预测模型进行训练与优化。实验结果显示,经过优化调整模型参数,模型在测试集上取得了较为理想的预测效果。尽…

《征服数据结构》SparseArray

摘要: 1,SparseArray的介绍 2,SparseArray的代码实现 1,SparseArray的介绍 前面我们讲过《ArrayMap》,用它来实现哈希表,其中存放key和value的数组长度是存放散列表数组长度的二倍。 在哈希表中如果key值是…

SwiftData 模型对象的多个实例在 SwiftUI 中不能及时同步的解决

概览 我们已经知道,用 CoreData 在背后默默支持的 SwiftUI 视图在使用 @FetchRequest 来查询托管对象集合时,若查询结果中的托管对象在别处被改变将不会在 FetchedResults 中得到及时的刷新。 那么这一“囧境”在 SwiftData 里是否也会“卷土重来”呢?空说无益,就让我们在…

【项目设计】负载均衡式——Online Judge

负载均衡式——Online Judge😎 前言🙌Online Judge 项目一、项目介绍二、项目技术栈三、项目使用环境四、项目宏观框架五、项目后端服务实现过程1、comm模块设计1.1 Log.hpp实现1.2 Util.hpp实现 2、compiler_server 模块设计2.1compile.hpp文件代码编写…

vb.netcad二开自学笔记2:认识vs编辑器

认识一下宇宙第一编辑器的界面图标含义还是很重要的,否则都不知道面对的是什么还怎么继续? 一、VS编辑器中常见的图标的含义 变量 长方体:变量 局部变量 两个矩形块:枚举 预定义的枚举 紫色立方体:方法 橙色树状结构…

通过AIS实现船舶追踪与照射

前些天突然接到个紧急的项目:某处需要实现对夜航船只进行追踪并用激光灯照射以保障夜航安全。这个项目紧急到什么程度呢?!现场激光灯都安装好了,还有三个星期就要验收了,但上家没搞定就甩给我们了:( 从技术上看&#…