Linux shell编程学习笔记64:vmstat命令 获取进程、内存、虚拟内存、IO、cpu等信息


0 前言

在系统安全检查中,通常要收集进程、内存、IO等信息。Linux提供了功能众多的命令来获取这些信息。今天我们先研究vmstat命令。

1.vmstat命令的功能、用法、选项说明和注意事项

1.1 vmstat命令的功能

vmstat是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可以对系统的进程情况、内存使用情况、交换页和   I/O 块使用情况、中断以及 CPU 使用情况进行统计并报告相应的信息。

我们可以使用命令vmstat --help 来查看 vmstat命令的帮助信息。 

[purpleendurer @ bah /w] vmstat --helpUsage:vmstat [options] [delay [count]]Options:-a, --active           active/inactive memory-f, --forks            number of forks since boot-m, --slabs            slabinfo-n, --one-header       do not redisplay header-s, --stats            event counter statistics-d, --disk             disk statistics-D, --disk-sum         summarize disk statistics-p, --partition <dev>  partition specific statistics-S, --unit <char>      define display unit-w, --wide             wide output-t, --timestamp        show timestamp-h, --help     display this help and exit-V, --version  output version information and exitFor more details see vmstat(8).
[purpleendurer @ bah /w] 

 

1.2 vmstat命令的用法

 vmstat [选项] [刷新延时 [刷新次数]]

1.3 vmstat命令的选项说明

选项说明

-a

--active

活动/非活动内存

-f

--forks

显示自启动以来的 fork 数量

fork是任何在保持活动状态的同时生成另一个进程的进程。

这里的 fork 数量包括 fork、vfork 以及 clone 等系统调用!

-m

--slabs

slabinfo

-n

--one-header

不重新显示标头

-s

--stats

事件计数器统计

-d

---disk

磁盘统计信息

-D

--disk-sum

汇总磁盘统计信息

-p

--partition <dev>

分区特定统计信息

-S

--unit <char>

定义输出的结果中的显示单位,

内存数据的单位默认是 KB,可以通过 -S 选项调整显示的单位,有下面几种单位可供选择:

  • k:1000 bytes
  • K:1024 bytes
  • m:1000 * 1000 bytes
  • M:1024 * 1024 bytes

注意:-S 选项对 si、 so 字段无效

-w

--wide

宽输出

vmstat 结果中的某些字段的数字有时会比较长,而且跟字段名的位置有偏差, 不太适合人类的观看习惯,-w 选项可以按照宽模式显示数据,使结果看起来更直观,下图是分别未使用宽模式和使用了宽模式的一个对比!

-t

--timestamp

显示时间戳

-h

--help

显示此帮助并退出

-V

--version

输出版本信息并退出

1.4 注意事项

  1. 运行 vmstat 不须要特别的使用权限
  2. 这些系统信息是用来向用户提供分析系统瓶颈问题信息的。
  3. linux在计算进程情况时不将正在运行的 vmstat 自己计算进去。
  4. 当前所在的 linux 块的大小都是 1K,而 CD-ROM 文件系统的块大小为 2K。
  5. 对于 slabinfo,需要使用 -m 命令行选项。请注意,您的 Linux 发行版内核需要支持 slabinfo 才能使用此选项。如果支持,则您需要使用 sudo 权限运行该命令。

2 vmstat命令实例

2.1 vmstat : 显示当前进程、内存、虚拟内存、读写、系统、cpu 信息

[purpleendurer @ bash ~] vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st3  0      0 2014768  39912 1532180    0    0   347  1611  443  752  2  1 96  1  0
[purpleendurer @ bash ~] 

 

命令执行后返回的信息包括 procs(进程)、memory(内存)、swap(交换分区 或 虚拟内存)、io(磁盘读/写)、system(系统)、cpu 共6个部分内容。

每个部分的含义如下:

字段含义
procs

  • r :等待运行的进程数,数量越大,系统越繁忙。
  • b:不可被唤醒的进程数量,数量越大,系统越繁忙。
  • w:被交换出去的可运行的进程数。

 此数由 linux 计算得出,但 linux 并不耗尽交换空间

这里的不可中断是指 一个进程在执行某些系统调用时进入的状态,在这种状态下,进程被阻塞,并且不能被中断,直到完成系统调用!

memory 
  • swpd :虚拟内存的使用情况,单位为 KB。
  • free   :空闲的内存容量,单位为 KB。
  • buff   :缓存I/O操作的内存容量,单位为 KB。
  • cache:缓存文件系统数据块的内存容量,单位为 KB。
  • inact  :非活跃内存大小,即被标明可回收的内存,区别于free和active
  • active:活跃的内存大小
swap 
  • si :从磁盘交换到内存的交换页数量,单位为 KB。
  • so:从内存交换到磁盘的交换页数量,单位为 KB。
这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。
io 
  • bi :从块设备读入的块数(读磁盘),单位是块/秒。
  • bo:写到块设备的块数(写磁盘),单位是块/秒。
这两个数越大,代表系统的 I/O 越繁忙。
system 
  • in:每秒的中断数,包括时钟中断。
  • cs:每秒的环境(上下文)切换次数。
这两个数越大,代表系统与接口设备的通信越繁忙。
cpu 
  • us :(user time)用户进程消耗 CPU 运算时间的百分比。
  • sy :(system time) 系统进程消耗cpu运算时间的百分比。
  • id  :(idle)空闲 CPU 的百分比。
  • wa:(wait)等待 I/O 所消耗的 CPU 百分比。
  • st  :(steal)被虚拟机所盗用的 CPU 百分比。

 2.2    vmstat -a : 显示活动/非活动内存

[purpleendurer @ bash ~] vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st3  0      0 2014768  39912 1532180    0    0   347  1611  443  752  2  1 96  1  0
[purpleendurer @ bash ~] vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st4  0      0 2014440 1557064  89764    0    0   309  1436  431  742  2  1 96  1  0
[purpleendurer @ bash ~] 

我们对比执行vmstat 和 vmstat -a 命令返回的信息,可以看到, vmstat -a 命令返回的memory部分中,原来属于buff和cache的位置 显示了 inact 和 active 两个信息。 

2.3 vmstat -d:显示磁盘统计信息

[purpleendurer @ bash ~] vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------total merged sectors      ms  total merged sectors      ms    cur    sec
vda     5730   2258  678968    7095  10127  44510 3156280  206114      0     10
zram0      0      0       0       0      0      0       0       0      0      0
[purpleendurer @ bash ~] 

 

命令返回信息包括 disk(磁盘名称)、reads(读)、writes(写)、IO(输入输出)四部分内容,具体说明如下:

字段含义
disk
  • VDA:是一种Linux内核的驱动程序它在虚拟环境中提供了与实体硬件磁盘交互的方式。 如果我们在虚拟机中添加了新的硬盘,那么这个硬盘就会被创建为一个虚拟磁盘,并由VDA驱动来进行管理和操作。
  • zram: 最初被称为 “compcache”,即 “压缩的高速缓存”。事实证明,zram 是一个用于创建内存内压缩缓存的工具,特别是作为交换空间使用。
reads
  • total       : 成功读取的总数
  • merged  :分组读取(产生一个 IO)
  • sectors   :成功读取的扇区数
  • ms          :读取花费的时间,单位为毫秒
writes
  • total       : 成功写入的总数
  • merged  :分组写入(产生一个 IO)
  • sectors   :成功写入的扇区数
  • ms          :写入花费的时间,单位为毫秒
IO
  • cur:正在进行的IO
  • s   :IO花费的时间,单位为秒

2.4 vmstat -D:汇总磁盘统计信息

[purpleendurer @ bash ~] vmstat -D2 disks 5 partitions 5720 total reads2258 merged reads678240 read sectors7088 milli reading9303 writes43535 merged writes3141200 written sectors205722 milli writing0 inprogress IO10 milli spent IO
[purpleendurer @ bash ~] 

信息说明
 2 disks            磁盘数
5 partitions         分区数
 5720 total reads读取数据块数
 2258 merged reads      分组读取(产生一个 IO)数
678240 read sectors读取的扇区个数
7088 milli reading读取时间,毫秒
9303 writes写入的数据块数
43535 merged writes分组写入(产生一个 IO)数
3141200 written sectors已写的扇区个数
205722 milli writing写入时间,毫秒
0 inprogress IO进行中的IO个数
10 milli spent IOIO花费的时间,毫秒

2.5 vmstat -f:显示自启动以来的 fork 数量

[purpleendurer @ bash ~] vmstat -f1391 forks
[purpleendurer @ bash ~] 

可见,自启动以来的 fork 数量为1391。

2.6  vmstat -p /dev/vda1: 查看分区/dev/vda1的信息

[purpleendurer @ bash ~] lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   40G  0 disk 
├─vda4 253:4    0  9.5G  0 part 
├─vda2 253:2    0  127M  0 part 
├─vda5 253:5    0   30G  0 part /dev/termination-log
├─vda3 253:3    0  384M  0 part 
└─vda1 253:1    0    1M  0 part 
[purpleendurer @ bash ~] vmstat -p /dev/vda1
vda1          reads   read sectors  writes    requested writes14        112          0          0
[purpleendurer @ bash ~] 

我们先使用lsblk命令查看当 前系统中的分区信息,然后指定查看分区/dev/vda1的信息。

命令返回的分区/dev/vda1的信息含义如下:

信息含义
vda1分区名称
reads                  14读取的数据块数
read sectors      112读取的扇区数
writes                    0写入的数据块数
requested writes   0请求写入的数据块数

2.7 vmstat -s:显示事件计数器统计信息

[purpleendurer @ bash ~] vmstat -s3855940 K total memory277356 K used memory88576 K active memory1567116 K inactive memory2004888 K free memory40140 K buffer memory1533556 K swap cache0 K total swap0 K used swap0 K free swap2455 non-nice user cpu ticks0 nice user cpu ticks1125 system cpu ticks122725 idle cpu ticks949 IO-wait cpu ticks142 IRQ cpu ticks69 softirq cpu ticks0 stolen cpu ticks340856 pages paged in1580340 pages paged out0 pages swapped in0 pages swapped out534656 interrupts930534 CPU context switches1721145727 boot time1272 forks
[purpleendurer @ bash ~] 

 

 返回信息的含义如下:

信息含义
     3855940 K total memory       内存总数
      277356 K used memory 已使用内存数
        88576 K active memory活跃内存数
      1567116 K inactive memory非活跃内存数
      2004888 K free memory未分配使用内存数
         40140 K buffer memory缓存I/O操作的内存容数
     1533556 K swap cache缓存文件系统数据块的内存数
               0 K total swap虚拟内存总数
                0 K used swap已使用虚拟内存数
                0 K free swap未分配使用虚拟内存数
         2455 non-nice user cpu ticks非友好用户占用的CPU时间
                0 nice user cpu ticks友好用户占用的CPU时间
          1125 system cpu ticks系统占用的CPU时间
       122725 idle cpu ticks空闲的CPU时间
            949 IO-wait cpu ticks等待IO操作的占用的CPU时间
             142 IRQ cpu ticks(来自设备的)硬中断请求占用的CPU时间
               69 softirq cpu ticks软中断请求占用的CPU时间
                 0 stolen cpu ticks虚拟机盗用的 CPU 百分比
       340856 pages paged in块设备数据的读入内存的页数
      1580340 pages paged out写入块设备的内存页数
                  0 pages swapped in从块设备swap区中读入的页数
                  0 pages swapped out从块设备swap区中读出的页数
        534656 interrupts中断数
 930534 CPU context switchesCPU上下文切换次数
    1721145727 boot time系统运行时间
           1272 forksfork数

2.8 vmstat -t -w:宽行显示时间戳

[purpleendurer @ bash ~] vmstat -t
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st                 CST2  0      0 2012752  40516 1532440    0    0   197   919  386  696  2  1 97  0  0 2024-07-16 23:38:12
[purpleendurer @ bash ~] vmstat -t -w
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu-------- -----timestamp-----r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st                 CST3  0            0      2013128        40676      1532556    0    0   183   855  381  691   2   1  97   0   0 2024-07-16 23:39:17
[purpleendurer @ bash ~] 

返回的命令执行结果中增加了timestamp的内容。

我们也可以从对比中看到-w选项的作用。

2.9 vmstat -S M -t 1 3 :以M为单位,延迟1秒输出3次,带时间戳

[purpleendurer @ bash ~] vmstat -S M -t 1 3 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st                 CST2  0      0   1955     39   1497    0    0   170   791  386  703  1  1 97  0  0 2024-07-17 00:18:500  0      0   1955     39   1497    0    0     0     0  632 1200  0  1 99  0  0 2024-07-17 00:18:510  0      0   1955     39   1497    0    0     0    16  839 1801  2  0 98  1  0 2024-07-17 00:18:52
[purpleendurer @ bash ~] 

从时间戳可以看出来,命令每隔1秒钟显示一次信息。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

4.作业--Jquery,JS

目录 作业题目&#xff1a;1.使用Jquery完成点击图片变换图片颜色 A图 B代码 HTML的部分 JQ的部分 作业题目&#xff1a;2.使用JS中的DOM操作完成背景颜色渐变方向变换。点击背景&#xff0c;渐变方向发生改变。 A图 B代码 学习产出&#xff1a; 作业题目&#xff1a;1…

封装网络请求 鸿蒙APP HarmonyOS ArkTS

一、效果展示 通过在页面直接调用 userLogin(params) 方法&#xff0c;获取登录令牌 二、申请网络权限 访问网络时候首先需要申请网络权限&#xff0c;需要修改 src/main 目录下的 module.json5 文件&#xff0c;加入 requestPermissions 属性&#xff0c;详见官方文档 【声明权…

深度学习Week20——Pytorch实现残差网络和ResNet50V2算法

文章目录 深度学习Week20——Pytorch实现残差网络和ResNet50V2算法 一、前言 二、我的环境 三、代码复现 3.1 配置数据集 3.2 构建模型 四、模型应用与评估 4.1 编写训练函数 4.2 编写测试函数 4.3 训练模型 4.4 结果可视化 一、前言 &#x1f368; 本文为&#x1f517;365天深…

昇思25天学习打卡营第 12 天 | mindspore 实现 ResNet50 图像分类

1. 背景&#xff1a; 使用 mindspore 学习神经网络&#xff0c;打卡第 12 天&#xff1b;主要内容也依据 mindspore 的学习记录。 2. ResNet 介绍&#xff1a; mindspore 实现 ResNet50 图像分类&#xff1b; ResNet 基本介绍&#xff1a; Residual Networks 是微软研究院 K…

港股指数实时行情API接口

港股 指数 实时 行情 API接口 # Restful API https://tsanghi.com/api/fin/index/HKG/realtime?token{token}&ticker{ticker}指定指数代码&#xff0c;获取该指数的实时行情&#xff08;开、高、低、收、量&#xff09;。 更新周期&#xff1a;实时。 请求方式&#xff1a…

GuLi商城-商品服务-API-属性分组-分组修改级联选择器回显

前端代码:略 后端回显接口: 递归方法: @Override publi

linux进程——父子进程层面的PID,fork的原理与理解

前言&#xff1a;本篇内容主要讲解进程中系统调用fork和父子进程的概念与原理&#xff0c; 想要系统学习linux进程的友友们只管看本篇文章是不行的。 还要学习一些linux进程的周边知识以及linux进程其他方面的知识&#xff0c;博主的linux专栏中已经加入了这些文章方便友友们进…

连锁零售门店分析思路-人货场 数据分析

连锁零售门店分析思路 以下是一个连锁零售门店的分析思路&#xff1a; 一、市场与竞争分析 二、门店运营分析&#xff08;销售分析&#xff09; 三、销售与财务分析 四、客户分析 五、数字化与营销分析 最近帮一个大学生培训&#xff0c;就门店销售分析 &#xff0c;说到门店…

记录些MySQL题集(8)

ACID原则、事务隔离级别及事务机制原理 一、事务的ACID原则 什么是事务呢&#xff1f;事务通常是由一个或一组SQL组成的&#xff0c;组成一个事务的SQL一般都是一个业务操作&#xff0c;例如聊到的下单&#xff1a;「扣库存数量、增加订单详情记录、插入物流信息」&#xff0…

Css布局-伸缩盒笔记

前言 伸缩盒作为css3中的布局标准&#xff0c;不得不学呀&#xff0c;跟着b站yu神走一遍&#xff0c;yushen牛逼&#xff01; 伸缩盒子布局的优势 当然是伸缩了 伸缩容器与伸缩项目 display: flex display: inline-flex &#xff08;用的少&#xff09; 一个html元素既可以是…

我们距离通用人工智能还有多远?当它诞生后,会给社会发展带来哪些变革?

当我们谈论通用人工智能&#xff08;AGI&#xff09;&#xff0c;我们指的是一种能够像人类一样执行各种认知任务的人工智能系统。目前&#xff0c;我们所拥有的人工智能技术主要是狭义人工智能&#xff08;ANI&#xff09;&#xff0c;专注于特定任务&#xff0c;如语音识别、…

老司机减分宝典助手-学法减分扣分题目及答案 #经验分享#经验分享#职场发展

学法减分其实就是把我们驾驶证上面的分数一分一分地找回来&#xff0c;为什么说是一分一分地找回来呢&#xff1f;因为必须先把违章处理完才可以&#xff0c;无论这辆车是不是你的&#xff0c;无论这辆车挂靠在谁的公司名下或者是单位名下&#xff0c;你都可以把这个分找回来&a…

卷积神经网络图像识别车辆类型

卷积神经网络图像识别车辆类型 1、图像 自行车: 汽车: 摩托车: 2、数据集目录 3、流程 1、获取数据,把图像转成矩阵,并随机划分训练集、测试集 2、把标签转为数值,将标签向量转换为二值矩阵 3、图像数据归一化,0-1之间的值 4、构造卷积神经网络 5、设置图像输入…

3.RabbitMQ安装-Centos7

官方网址&#xff1a;gInstalling RabbitMQ | RabbitMQ 安装前提&#xff0c;需要一个erlang语言环境。 下载 erlang: Releases rabbitmq/erlang-rpm GitHub rabbitmq-server: 3.8.8 Releases rabbitmq/rabbitmq-server GitHub 安装命令 (说明i表示安装&#xff…

FPGA FIR fdatool filter designer MATLAB

位数问题 fdatool 先确定输入信号的位宽&#xff0c;比如17位在fdatool中&#xff0c;选set quantization parameters 选input/output 设置input word length 为17bit(not confirmed) fir compiler implementation 注意&#xff1a; 当设置输入位宽为16位时&#xff0c;ip核…

深入解析HNSW:Faiss中的层次化可导航小世界图

层次化可导航小世界&#xff08;HNSW&#xff09;图是向量相似性搜索中表现最佳的索引之一。HNSW 技术以其超级快速的搜索速度和出色的召回率&#xff0c;在近似最近邻&#xff08;ANN&#xff09;搜索中表现卓越。尽管 HNSW 是近似最近邻搜索中强大且受欢迎的算法&#xff0c;…

具有I2S输出的多模数字麦克风ICS-43434咪头

外观和丝印 ICS-43434麦克风3.50 mm x 2.65 mm&#xff0c;丝印为434&#xff08;图片不好拍&#xff0c;隐约可见434&#xff09; 一般描述 ICS-43434 是一款数字 IS 输出底部收音孔麦克风。完整的 ICS-43434 解决方案包括 MEMS 传感器、信号调理、模数转换器、抽取和抗混叠滤…

智能手术新时代:Apple Vision Pro在医疗领域的突破性应用

无人驾驶的未来&#xff1a;AI如何重塑我们的出行世界-CSDN博客文章浏览阅读2.2k次&#xff0c;点赞109次&#xff0c;收藏64次。无人驾驶汽车的发展是AI技术应用的一次伟大尝试。特斯拉与百度“萝卜快跑”在这个领域的竞争与合作&#xff0c;不仅展示了AI技术的强大潜力&#…

Heterophilous Distribution Propagation for Graph Neural Networks

推荐指数:2颗星 HDP不是聚集所有邻居信息,而是根据训练期间的伪标签自适应的将邻居分为同配和异配.并通过原型对比,垂直约束异配邻居分布 前人的问题 1.邻居划分的不足.已存在的方法要不不能区分同配和异配,要不简单的采用阈值去划分同配异配 2.以往的异配GNN仅仅是简单的邻居…

【C++】拷贝构造函数及析构函数

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…