Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)

文章目录

  • 一、mpstat命令
  • 二、iostat命令
    • 2.1显示设备负载情况
    • 2.2显示指定磁盘信息
    • 2.3显示磁盘的详细信息
  • 三、iotop命令
    • 3.1命令格式
    • 3.2交互模式
  • 四、nload命令(流量监控)
  • 五、pidstat命令
    • 5.1输出信息含义
    • 5.2各选项详解
      • 5.2.1使用-r选项统计进程内存使用情况
      • 5.2.2使用-d选项统计进程IO使用情况
      • 5.2.3使用-w选项显示进程的上下文切换情况
      • 5.2.4使用-t和-p选项显示指定进程的线程
  • 六、lsof命令
  • 七、tcpdump命令


一、mpstat命令

mpstat 命令显示各个可用CPU的状态,mpstat 是 Multi-Processor Statistics 的缩写,是实时监控工具。 mpstat 最大的特点是可以查看多核心的CPU中每个计算核心的统计数据; mpstat 命令主要用于多 CPU 环境下,它显示各个可用 CPU 的状态。
mpstst命令语法

mpstat [-P {cpu/ALL}] [internal [count]]
-P{cpu/ALL}      //表示监控那个cpu,cpu在[0-cpu个数-1]中取值或者使用ALL
internal         //表示相邻两次采样的间隔时间
count            //表示采样的次数,count能和delay一起使用

直接使用mpstat命令
当mpstat不带参数时,输出为从系统启动以来的平均值
在这里插入图片描述
输出各项信息如下:

参数 含义
CPU 处理器ID
%usr 用户态使用的CPU百分比
%nice 表示使用nice命令对进程进行降级时CPU的百分比
%sys 表示内核进程使用的 CPU 百分比
%iowait 表示等待进行 I/O 所使用的 CPU 时间百分比
%irq 表示用于处理系统中断的 CPU 百分比
%soft 示用于软件中断的 CPU 百分比
%steal 虚拟机强制CPU等待的时间百分比
%guest 虚拟机占用CPU时间的百分比
%idle CPU 的空闲时间的百分比

查看所有CPU信息,每两秒刷新一次,查看两次

mpstat -P ALL 2 2

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第1张图片


二、iostat命令

iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。
iostat命令格式

iostat [选项] [时间] [次数]
-c:显示CPU使用情况
-d:显示磁盘使用情况
-N:显示磁盘阵列情况
-n:显示NFS使用情况
-k:以KB为单位显示
-m:以M为单位显示
-t:报告每秒向终端读取和写入的字符数和CPU信息
-V:显示版本信息
-x:显示详细信息
-p:[磁盘]显示磁盘和分区情况

2.1显示设备负载情况

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第2张图片
CPU

参数 含义
%user 表示用户所使用CPU的百分比
%nice 表示使用nice命令对进程进行降级时CPU的百分比
%system 表示内核进程使用的CPU百分比
%iowait 表示等待进行I/O所使用的CPU时间百分比
%steal 虚拟机强制CPU等待的时间百分比
%idle CPU的空闲时间的百分比

I/O

参数 含义
device 磁盘名称
tps 每秒钟发送到I/O请求数
Blk_read / s 每秒读取的块数
Blk_wrtn / s 每秒写入的块数
Blk_read 读入块的总数
Blk_wrtn 写入块的总数

2.2显示指定磁盘信息

iostat -d sda1

在这里插入图片描述

2.3显示磁盘的详细信息

显示两次sda1磁盘的详细信息

iostat -d sda1 -x 2 2

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第3张图片
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节
wkB/s: 每秒写K字节数。是 wsect/s 的一半
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)
avgqu-sz: 平均I/O队列长度
await: 平均每次设备I/O操作的等待时间 (毫秒)
r_await:每个读操作平均所需的时间
不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间
w_await:每个写操作平均所需的时间
不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间
svctm: 平均每次设备I/O操作的服务时间 (毫秒)
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比


三、iotop命令

iotop命令 是一个用来监视磁盘I/O使用状况的top类工具。 iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。 Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。
直接输入iotop命令查看
Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第4张图片
输出的各项信息:

Total DISK READ 从磁盘中读取数据的总速率
Total DISK WRITE 从磁盘中写入数据的总速率
Actual DISK READ 从磁盘中读取数据的实际速率
Actulal DISK WRITE 从磁盘中写入数据的实际速率
TID 线程ID,按p可转换成进程ID
PRIO 优先级
USER 线程所有者
DISK READ 从磁盘中读取的速率
DISK WRITE 往磁盘里写入的速率
SWAPIN swap交换百分比
IO> IO等待所占用的百分比
COMMAND 进程命令

3.1命令格式

iotop命令格式

iotop [选项]
-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-P PID:监控的进程pid。
-u USER:监控的进程用户。
iotop -o        //只显示io进程

在这里插入图片描述

iotop -b        //无交互模式,批量显示

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第5张图片

iotop -P        //显示进程

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第6张图片

3.2交互模式

和top命令类似,iotop也支持以下几个交互按键
交互按键:
left和right方向键:改变排序 
r:反向排序
o:切换至选项–only
p:切换至–processes选项
a:切换至–accumulated选项
q:退出
i:改变线程的优先级


四、nload命令(流量监控)

nload 命令用于查看linux网络流量状况,实时输出。 可以理解为是一个控制台应用程序,用来实时监测网络流量和带宽使用情况的命令。 使用可视化的界面显示流入和留出系统的网络带宽数据。
直接使用nload命令
Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第7张图片
nload 默认分为上下两块:
上半部分是:Incoming也就是进入网卡的流量,
下半部分是:Outgoing,也就是从这块网卡出去的流量,
Curr:当前流量
Avg:平均流量
Min:最小流量
Max:最大流量
Ttl:流量统计

nload -m       //只显示统计数据,不显示流量图

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第8张图片


五、pidstat命令

pidstat 命令是 sysstat 工具的一个命令,用来监控全部或者指定 进程 的CPU、内存、线程、设备IO等系统资源的占用情况。 pidstat 首次运行时显示自系统启动开始的各项统计信息,之后运行 pidstat 将显示自上次运行该命令之后的统计信息。
pidstat命令格式

pidstat [选项] [时间间隔] [次数]
选项 含义
-u 默认的参数,显示各个进程的cpu使用统计
-r 显示各个进程的内存使用情况
-d 显示各个进程的IO使用情况
-w 显示各个进程的上下文切换情况
-t 显示线程
-p 指定进程号
-l 显示命令名和所有参数
-C 仅显示command中包含匹配字符串的进程
-G 显示符合匹配进程名字的进程

5.1输出信息含义

直接输入pidstat
Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第9张图片

UID:用户ID
PID:进程ID
%user:表示用户进程所使用cpu的百分比
%system:表示内核进程所使用cpu的百分比
%guest:表示进程在虚拟机占用的CPU的百分比
%wait:表示任务在等待运行时花费的cpu的百分比
%CPU:表示进程所使用cpu的百分比
CPU:处理进程的cpu编号
Command:进程对应的命令

5.2各选项详解

5.2.1使用-r选项统计进程内存使用情况

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第10张图片

minflt/s:从内存中加载数据时每秒出现的次要错误的数目,这些不要求从磁盘载入内存界面
majflt/s:从内存中加载数据时每秒出现的主要错误的数目,这些要求从磁盘载入内存界面,一般在内存使用紧张时产生
VSZ:占用的虚拟内存大小,包括进入交换分区的内存
RSS:占用的物理内存大小,不包括进入交换分区的内存
%MEN:进程使用的物理内存百分比

5.2.2使用-d选项统计进程IO使用情况

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第11张图片

kB_rd/s:进程每秒从磁盘读取的数据量(kB为单位)
kB_wr/s:进程每秒向磁盘写入的数据量(kB为单位)kB_ccwr/s:任务写入磁盘被取消的速率(kB为单位)

5.2.3使用-w选项显示进程的上下文切换情况

Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第12张图片

cswch/s :表示每秒自愿上下文切换的次数
nvcswch/s :表示每秒非自愿上下文切换的次数
注:所谓自愿上下文切换,是指进程无法获得所需的资源导致的上下文切换。
而非自愿上下文切换,则是指进程由于cpu分配的时间片耗尽,被系统强制调度导致的上下文切换

5.2.4使用-t和-p选项显示指定进程的线程

在这里插入图片描述

TGID:主线程id
TID: 线程id

六、lsof命令

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

lsof命令使用选项
-p:输出指定进程打开的文件
-l:输出中使用ID代替用户名
-u:输出指定用户打开的文件
-c:输出COMMAND列中包含string的项
-d:输出包含指定描述符的项
fileName:输出打开文件fileName的所有项

输入lsof -p 1:列出1进程打开的文件
Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第13张图片
输出的各项信息:
COMMAND : 命令名称
PID : 进程ID
USER : 用户ID号或登录名
FD : 文件描述符
TYPE : 与文件关联结点的类型
DEVICE : 设备号
SIZE/OFF : 文件大小/偏移量,以字节为单位
NODE : 文件结点
NAME : 文件挂载点和文件所在的系统


七、tcpdump命令

tcpdump是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具
tcpdump用法tcpdump -i ens33
抓取所有的经过ens33网卡的网络包
如下图:Linux中监控CPU、磁盘、内存、I/O资源命令(mpstat、iostat、iotop、nload、pidstat、lsof、tcpdump)_第14张图片

你可能感兴趣的:(linux,tcpdump,服务器)