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
iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。
iostat命令格式
iostat [选项] [时间] [次数]
-c:显示CPU使用情况
-d:显示磁盘使用情况
-N:显示磁盘阵列情况
-n:显示NFS使用情况
-k:以KB为单位显示
-m:以M为单位显示
-t:报告每秒向终端读取和写入的字符数和CPU信息
-V:显示版本信息
-x:显示详细信息
-p:[磁盘]显示磁盘和分区情况
cpu
参数 | 含义 |
%user | 表示用户所使用CPU的百分比 |
%nice | 表示使用nice命令对进程进行降级时CPU的百分比 |
%system | 表示内核进程使用的CPU百分比 |
%iowait | 表示等待进行I/O所使用的CPU时间百分比 |
%steal | 虚拟机强制CPU等待的时间百分比 |
%idle | CPU的空闲时间的百分比 |
l/O
参数 | 含义 |
device | 磁盘名称 |
tps | 每秒钟发送到I/O请求数 |
Blk_read / s | 每秒读取的块数 |
Blk_wrtn / s | 每秒写入的块数 |
Blk_read | 读入块的总数 |
Blk_wrtn | 写入块的总数 |
iostat -d sda1
显示两次sda1磁盘的详细信息
iostat -d sda1 -x 2 2
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命令 是一个用来监视磁盘I/O使用状况的top类工具。 iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。 Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。
直接输入iotop命令查看
输出的各项信息:
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 进程命令
iotop命令格式
iotop [选项]
-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-P PID:监控的进程pid。
-u USER:监控的进程用户。
iotop -o //只显示io进程
iotop -b //无交互模式,批量显示
iotop -P //显示进程
和top命令类似,iotop也支持以下几个交互按键
交互按键:
left和right方向键:改变排序
r:反向排序
o:切换至选项–only
p:切换至–processes选项
a:切换至–accumulated选项
q:退出
i:改变线程的优先级
nload 命令用于查看linux网络流量状况,实时输出。 可以理解为是一个控制台应用程序,用来实时监测网络流量和带宽使用情况的命令。 使用可视化的界面显示流入和留出系统的网络带宽数据。
直接使用nload命令
nload 默认分为上下两块:
上半部分是:Incoming也就是进入网卡的流量,
下半部分是:Outgoing,也就是从这块网卡出去的流量,
Curr:当前流量
Avg:平均流量
Min:最小流量
Max:最大流量
Ttl:流量统计
pidstat 命令是 sysstat 工具的一个命令,用来监控全部或者指定 进程 的CPU、内存、线程、设备IO等系统资源的占用情况。 pidstat 首次运行时显示自系统启动开始的各项统计信息,之后运行 pidstat 将显示自上次运行该命令之后的统计信息。
pidstat命令格式
pidstat [选项] [时间间隔] [次数]
选项 含义
-u 默认的参数,显示各个进程的cpu使用统计
-r 显示各个进程的内存使用情况
-d 显示各个进程的IO使用情况
-w 显示各个进程的上下文切换情况
-t 显示线程
-p 指定进程号
-l 显示命令名和所有参数
-C 仅显示command中包含匹配字符串的进程
-G 显示符合匹配进程名字的进程
直接输入pidstat
UID:用户ID
PID:进程ID
%user:表示用户进程所使用cpu的百分比
%system:表示内核进程所使用cpu的百分比
%guest:表示进程在虚拟机占用的CPU的百分比
%wait:表示任务在等待运行时花费的cpu的百分比
%CPU:表示进程所使用cpu的百分比
CPU:处理进程的cpu编号
Command:进程对应的命令
minflt/s:从内存中加载数据时每秒出现的次要错误的数目,这些不要求从磁盘载入内存界面
majflt/s:从内存中加载数据时每秒出现的主要错误的数目,这些要求从磁盘载入内存界面,一般在内存使用紧张时产生
VSZ:占用的虚拟内存大小,包括进入交换分区的内存
RSS:占用的物理内存大小,不包括进入交换分区的内存
%MEN:进程使用的物理内存百分比
kB_rd/s:进程每秒从磁盘读取的数据量(kB为单位)
kB_wr/s:进程每秒向磁盘写入的数据量(kB为单位)kB_ccwr/s:任务写入磁盘被取消的速率(kB为单位)
cswch/s :表示每秒自愿上下文切换的次数
nvcswch/s :表示每秒非自愿上下文切换的次数
注:所谓自愿上下文切换,是指进程无法获得所需的资源导致的上下文切换。
而非自愿上下文切换,则是指进程由于cpu分配的时间片耗尽,被系统强制调度导致的上下文切换
TGID:主线程id
TID: 线程id
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
lsof命令使用选项
-p:输出指定进程打开的文件
-l:输出中使用ID代替用户名
-u:输出指定用户打开的文件
-c:输出COMMAND列中包含string的项
-d:输出包含指定描述符的项
fileName:输出打开文件fileName的所有项
输入lsof -p 1:列出1进程打开的文件
COMMAND : 命令名称
PID : 进程ID
USER : 用户ID号或登录名
FD : 文件描述符
TYPE : 与文件关联结点的类型
DEVICE : 设备号
SIZE/OFF : 文件大小/偏移量,以字节为单位
NODE : 文件结点
NAME : 文件挂载点和文件所在的系统
tcpdump是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具
tcpdump用法tcpdump -i ens33
抓取所有的经过ens33网卡的网络包
如下图: