Linux资源监控工具集
pidstat工具
pidstat是Linux下一个非常实用的 进程级性能监控工具,能实时显示各进程的CPU、内存、I/O、线程、上下文切换等详细性能指标。
pidstat安装
作为Linux外部的命令工具,可能需要安装,安装方法如下:
Debian / Ubuntu
apt -y install sysstat
RedHat / CentOS
yum -y install sysstat
补充说明:安装完成后会包含:
pidstat,iostat,mpstat,sar等命令。
pidstat使用
pidstat使用语法:
pidstat 选项 间隔秒数 次数
补充说明:如果不加次数参数默认会一直进行实时监测数据,跟ping命令一样。
【示例1】每隔2秒刷新一次,共显示2次
pidstat 2 2
查看结果如下图所示:

该工具能够查看CPU、内存、磁盘I/O等资源。使用-u选项查看每个进程的CPU资源(默认),使用-r查看内存使用情况,使用-d查看磁盘I/O统计信息。
【示例2】查看CPU使用率
pidstat -u 2 2
【示例3】查看内存使用情况
pidstat -r 2 2
【示例4】查看磁盘I/O统计信息
pidstat -d 2 2
【示例5】查看综合信息(CPU + 内存 + I/O)
pidstat -urd 1 1
以示例5为例,查看结果如下图所示:

pidstat常用输出字段说明
1.通用字段(适用所有统计类型)
- PID:进程 ID(唯一标识进程)
- UID:进程所属用户的 ID
- USER:进程所属用户名
- Command:进程名称或执行命令
- TGID:线程组 ID(通常是主线程的 PID)
- TID:线程 ID(在线程模式下使用 -t 时显示)
2.CPU统计字段
- %usr:用户空间中 CPU 使用率
- %system:内核空间中 CPU 使用率
- %guest:运行虚拟机时的 CPU 使用率
- %wait:进程等待 I/O 完成所占 CPU 时间比例
- %CPU:进程总的 CPU 使用率(等于 %usr + %system + %guest)
- CPU:该进程运行所在的 CPU 编号
3.内存统计字段
- minflt/s:每秒次要(软)缺页数(不从磁盘加载)
- majflt/s:每秒主要(硬)缺页数(需要从磁盘加载)
- VSZ:进程占用的虚拟内存大小(KB)
- RSS:进程实际占用的物理内存大小(KB)
- %MEM:进程占用物理内存的百分比
4.磁盘I/O统计字段
- kB_rd/s:每秒从磁盘读取的数据量(KB/s)
- kB_wr/s:每秒写入磁盘的数据量(KB/s)
- kB_ccwr/s:每秒由进程取消写入的页缓存数据量(KB/s)
- iodelay:进程因 I/O 等待所导致的延迟时间
5.网络统计字段
- rxkB/s:进程每秒接收的数据量(KB/s)
- txkB/s:进程每秒发送的数据量(KB/s)
pidstat命令常用选项
| 选项 | 含义 |
|---|---|
| -u | 显示每个进程的 CPU 使用率(默认) |
| -r | 显示内存使用情况 |
| -d | 显示磁盘 I/O 统计信息 |
| -w | 显示任务上下文切换情况 |
| -t | 显示线程(task)级别统计信息 |
| -p | 仅显示指定 PID 的信息 |
| -G | 按进程名过滤(部分系统支持) |
| -h | 可读性更好的输出格式(human readable) |
| -l | 显示完整命令行(不截断) |
| -T <ALL/TASK> | 指定统计维度(进程或线程) |
| -V | 显示版本信息 |
| -H | 不合并线程,单独显示每个线程(thread) |
| -C | 按命令名过滤输出 |
| -e | 监控特定性能事件(如硬件计数器) |
| -U | 显示指定用户的进程 |
dstat工具
dstat是一个非常实用的系统性能实时监控工具,它可以综合展示 CPU、内存、磁盘、网络、IO等多种资源的动态使用情况,常用于替代vmstat、iostat、netstat、ifstat等命令的组合。
dstat安装
作为Linux外部的命令工具,可能需要安装,安装方法如下:
Debian / Ubuntu
apt -y install dstat
RedHat / CentOS
yum -y install dstat
dstat使用
dstat使用语法:
dstat 选项 间隔秒数 次数
补充说明:如果不加次数参数默认会一直进行实时监测数据,跟ping命令一样。
【示例1】查看总体资源使用情况,每1秒刷新1次,显示3次
dstat 1 3
【示例2】查看CPU使用情况,每1秒刷新1次,显示3次
dstat -c 1 3
【示例3】查看内存使用情况,每1秒刷新1次,显示3次
dstat -m 1 3
【示例4】查看磁盘I/O使用情况,每1秒刷新1次,显示3次
dstat -d 1 3
【示例5】查看网络使用情况,每1秒刷新1次,显示3次
dstat -n 1 3
上面所有示例的查看结果如下图所示:

dstat常用输出字段说明
1.系统字段
- int:每秒中断(interrupt)次数
- csw:每秒上下文切换(context switch)次数
- fork:每秒创建的进程/线程数(某些版本插件支持)
2.CPU统计字段
- usr:用户态(user space)CPU 使用率
- sys:内核态(system space)CPU 使用率
- idl:CPU 空闲时间百分比(idle)
- wai:CPU 等待 I/O 的时间百分比(I/O wait)
- hiq:硬中断(hardware interrupts)占用 CPU 的时间百分比
- siq:软中断(software interrupts)占用 CPU 的时间百分比
- stl:被虚拟机“偷取”的 CPU 时间(stolen time,用于虚拟化环境)
3.内存统计字段
- used:当前使用的物理内存量(KB)
- buff:被内核缓冲区(buffer cache)占用的内存量
- cach:被页面缓存(page cache)占用的内存量
- free:空闲内存量(KB)
4.磁盘统计字段
- read:每秒读取的数据量(单位:KB/s)
- writ:每秒写入的数据量(单位:KB/s)
- avrd / avwr(部分插件):
- 平均读/写速率
- 某些系统或插件扩展会显示更详细的 per-device 数据(如 dstat -D sda,sdb)
5.磁盘I/O统计字段
- read:每秒块设备读取请求数
- writ:每秒块设备写入请求数
- list:每秒合并请求数(表示调度器优化情况)
5.网络统计字段
- recv:每秒接收数据量(单位:KB/s)
- send:每秒发送数据量(单位:KB/s)
- (配合 -N 可指定接口,如 dstat -N eth0)
dstat插件使用
补充说明:dstat的插件机制非常强大,可以使用dstat的插件机制实现很多功能。
可以使用--list选项查看可用的插件列表
root@ihavetwocats:~# dstat --list
internal:
aio,cpu,cpu-adv,cpu-use,cpu24,disk,disk24,disk24-old,epoch,fs,int,int24,io,ipc,load,lock,mem,mem-adv,net,
page,page24,proc,raw,socket,swap,swap-old,sys,tcp,time,udp,unix,vm,vm-adv,zones
/usr/share/dstat:
battery,battery-remain,condor-queue,cpufreq,dbus,disk-avgqu,disk-avgrq,disk-svctm,disk-tps,disk-util,disk-wait,
dstat,dstat-cpu,dstat-ctxt,dstat-mem,fan,freespace,fuse,gpfs,gpfs-ops,helloworld,ib,innodb-buffer,innodb-io,
innodb-ops,jvm-full,jvm-vm,lustre,md-status,memcache-hits,mongodb-conn,mongodb-mem,mongodb-opcount,mongodb-queue,
mongodb-stats,mysql-io,mysql-keys,mysql5-cmds,mysql5-conn,mysql5-innodb,mysql5-innodb-basic,mysql5-innodb-extra,
mysql5-io,mysql5-keys,net-packets,nfs3,nfs3-ops,nfsd3,nfsd3-ops,nfsd4-ops,nfsstat4,ntp,postfix,power,proc-count,
qmail,redis,rpc,rpcd,sendmail,snmp-cpu,snmp-load,snmp-mem,snmp-net,snmp-net-err,snmp-sys,snooze,squid,test,
thermal,top-bio,top-bio-adv,top-childwait,top-cpu,top-cpu-adv,top-cputime,top-cputime-avg,top-int,top-io,
top-io-adv,top-latency,top-latency-avg,top-mem,top-oom,utmp,vm-cpu,vm-mem,vm-mem-adv,vmk-hba,vmk-int,vmk-nic,
vz-cpu,vz-io,vz-ubc,wifi,zfs-arc,zfs-l2arc,zfs-zil
【示例】查看总体的性能使用资源使用(CPU、内存、磁盘、网络)显示最大的进程,查看间隔1秒,展示20次的结果
dstat -cdngym --top-cpu --top-mem --top-io 1 20
查看结果如下图所示:

dstat命令常用选项
| 分类 | 选项 | 说明 |
|---|---|---|
| CPU | -c | 显示 CPU 使用情况(user、sys、idle、wait、stolen) |
| 内存 | -m | 显示内存使用情况(used、buff、cache、free) |
| 磁盘IO | -d | 显示磁盘读写速率(read、write) |
| 网络 | -n | 显示网络接收和发送速率(recv、send) |
| 分页 | -p | 显示分页活动(page in/out) |
| 系统 | -s | 显示系统中断、中断次数、上下文切换次数 |
| 进程 | –proc | 显示进程数变化 |
| 时间 | -t | 在输出中添加时间戳 |
| 总览 | -a | 等价于 -cdngy(CPU、磁盘、网络、分页、系统) |
| 内核IO | -y | 显示系统中断与上下文切换(类似 vmstat) |
| 文件系统 | -f | 显示文件系统变化(挂载/卸载) |
| IO统计 | –disk-util | 显示每个磁盘设备的利用率 |
| 拓展插件 | –list | 列出系统支持的所有插件 |
★性能分析神器:Glances
Glances是一个跨平台的系统监控工具(基于 Python 编写),它可以在命令行中以动态、实时的方式显示系统的各类资源使用情况,类似于top或htop,但功能更全面。
glances特点:
- 可同时显示 CPU、内存、磁盘、网络、进程、传感器等信息;
- 支持 Web 界面远程监控;
- 支持导出监控数据到文件、InfluxDB、Prometheus 等;
- 可通过 REST API 提供监控数据。
作为Linux外部的命令工具,可能需要安装,安装方法如下:
Debian / Ubuntu
apt -y install glances
RedHat / CentOS
yum -y install glances
1.glances本机使用
glances
启动之后,会出现类似top命令相似的界面,但是内容比top命令的界面丰富的多,而且界面显示更加清晰,如下图所示:

2.glances启动web服务
glances -w
启动之后默认访问61208端口就可以看到web界面,地址为:http://<server_ip>:61208。
3.glances启动远程监控
# 在目标服务器上运行
glances -s
# 在本机连接
glances -c <server_ip>
主要监控内容说明
| 模块 | 说明 |
|---|---|
| CPU | 显示每个核心的使用率、系统占用、用户占用、IO等待等信息 |
| MEM | 内存使用情况,包括 total、used、free、available、swap |
| LOAD | 系统负载(1、5、15分钟平均负载) |
| DISK I/O | 磁盘读写速度、I/O等待、挂载点使用率 |
| NET | 各网络接口的上传、下载速率 |
| FS | 各文件系统的已用、可用空间 |
| PROC | 当前运行进程数、CPU/内存占用最高的进程 |
| SENSORS | CPU 温度、风扇转速(若硬件支持) |
| DOCKER | 容器运行情况(如检测到 Docker 环境) |
glances常用快捷键
| 快捷键 | 功能说明 |
|---|---|
| q | 退出 Glances |
| 1 | 显示每个 CPU 核心的详细使用情况 |
| m | 显示内存详情(RAM + Swap) |
| d | 显示磁盘详情 |
| n | 显示网络详情 |
| p | 显示进程列表 |
| c | 按 CPU 使用率排序进程 |
| t | 按线程数排序进程 |
| i | 按 I/O 使用率排序进程 |
| / | 搜索进程名 |
| h | 显示帮助菜单 |