一、命令简介
dstat命令是 Linux 系统中功能强大的系统资源统计工具,可以实时监控 CPU、内存、磁盘、网络、系统负载等多种性能指标。它结合了 vmstat、iostat、netstat、ifstat 等工具的功能,以彩色表格形式直观展示系统性能数据,是系统管理员进行性能监控和故障排查的得力助手。
二、安装方法
dstat 不是所有 Linux 发行版默认安装的工具,需要手动安装:
# Ubuntu/Debian 系统
sudo apt-get install dstat
# CentOS/RHEL 系统
sudo yum install dstat
# Fedora 系统
sudo dnf install dstat
# Arch Linux 系统
sudo pacman -S dstat
三、基本语法
dstat [选项] [时间间隔] [刷新次数]
权限要求:普通用户即可使用,无需特殊权限。
四、常用选项详解
4.1 核心选项
| 选项 | 功能说明 | 示例 |
|---|
-c | 显示 CPU 使用率 | dstat -c |
-d | 显示磁盘 I/O 统计 | dstat -d |
-m | 显示内存使用情况 | dstat -m |
-n | 显示网络 I/O 统计 | dstat -n |
-p | 显示进程统计 | dstat -p |
-r | 显示 I/O 请求统计 | dstat -r |
-s | 显示交换分区使用 | dstat -s |
-y | 显示系统统计 | dstat -y |
-g | 显示页面调度统计 | dstat -g |
-l | 显示系统负载 | dstat -l |
-t | 显示时间戳 | dstat -t |
-f | 显示文件系统统计 | dstat -f |
4.2 组合选项
| 选项 | 功能说明 | 示例 |
|---|
-a | 显示所有统计(相当于 -cdngy) | dstat -a |
--top-cpu | 显示 CPU 使用率最高的进程 | dstat --top-cpu |
--top-io | 显示 I/O 使用率最高的进程 | dstat --top-io |
--top-mem | 显示内存使用率最高的进程 | dstat --top-mem |
--top-latency | 显示延迟最高的进程 | dstat --top-latency |
--output FILE | 将输出保存到文件 | dstat --output dstat.csv |
4.3 输出控制选项
| 选项 | 功能说明 | 示例 |
|---|
-C 0,1,total | 显示指定 CPU 核心的统计 | dstat -C 0,1,total |
-D sda,sdb,total | 显示指定磁盘的统计 | dstat -D sda,sdb,total |
-N eth0,eth1,total | 显示指定网卡的统计 | dstat -N eth0,eth1,total |
--noheaders | 不显示头部信息 | dstat --noheaders |
--nocolor | 禁用彩色输出 | dstat --nocolor |
--noupdate | 禁用自动更新 | dstat --noupdate |
--integer | 显示整数而不是小数 | dstat --integer |
五、实际应用场景
5.1 基本监控
# 显示 CPU、磁盘、网络、系统负载等核心指标(默认)
dstat
# 每 2 秒刷新一次,共显示 5 次
dstat 2 5
# 显示所有统计信息
dstat -a
5.2 CPU 监控
# 显示 CPU 使用率
dstat -c
# 显示指定 CPU 核心的统计
dstat -c -C 0,1,total
# 显示 CPU 使用率最高的进程
dstat --top-cpu
5.3 内存监控
# 显示内存使用情况
dstat -m
# 显示内存使用率最高的进程
dstat --top-mem
5.4 磁盘 I/O 监控
# 显示磁盘 I/O 统计
dstat -d
# 显示指定磁盘的统计
dstat -d -D sda,sdb,total
# 显示 I/O 使用率最高的进程
dstat --top-io
5.5 网络监控
# 显示网络 I/O 统计
dstat -n
# 显示指定网卡的统计
dstat -n -N eth0,eth1,total
5.6 进程监控
# 显示进程统计
dstat -p
# 显示系统负载
dstat -l
# 显示系统统计
dstat -y
5.7 组合监控
# 同时监控 CPU、内存、磁盘、网络
dstat -c -m -d -n
# 监控所有统计并保存到文件
dstat -a --output dstat.log 2 10
六、输出字段解释
6.1 CPU 统计(-c)
| 字段 | 说明 |
|---|
| usr | 用户空间 CPU 使用率 |
| sys | 内核空间 CPU 使用率 |
| idl | CPU 空闲率 |
| wai | I/O 等待时间 |
| hiq | 硬件中断 |
| siq | 软件中断 |
6.2 内存统计(-m)
| 字段 | 说明 |
|---|
| used | 已使用内存 |
| buff | 缓冲区内存 |
| cach | 缓存内存 |
| free | 空闲内存 |
6.3 磁盘统计(-d)
| 字段 | 说明 |
|---|
| read | 磁盘读取速度 |
| writ | 磁盘写入速度 |
6.4 网络统计(-n)
| 字段 | 说明 |
|---|
| recv | 网络接收速度 |
| send | 网络发送速度 |
6.5 系统统计(-y)
七、高级用法
7.1 自定义输出格式
# 自定义显示字段
dstat -c -d -n -m -p -r -s -g -l -t
# 显示时间戳和系统负载
dstat -t -l
7.2 输出到文件
# 将输出保存到 CSV 文件
dstat -a --output dstat.csv 2 10
# 实时监控并记录到文件
dstat -a > dstat.log
7.3 后台监控
# 后台运行 dstat 并记录到文件
nohup dstat -a 2 > dstat.log &
7.4 与其他命令结合
# 结合 grep 过滤特定信息
dstat -a | grep "sda"
# 结合 awk 提取特定字段
dstat -c 2 5 | awk '/usr/ {print $1}'
八、注意事项
- 权限要求:dstat 需要读取 /proc 文件系统,普通用户即可使用
- 性能影响:频繁刷新(如间隔小于 1 秒)可能会影响系统性能
- 输出格式:默认以彩色表格形式显示,适合终端查看
- 数据精度:对于高精度监控需求,建议使用更专业的工具(如 sysstat)
- 虚拟化环境:在虚拟化环境中,某些统计可能不准确
九、与相关工具对比
| 工具 | 特点 | 适用场景 |
|---|
| dstat | 多功能、彩色输出、实时监控 | 综合性能监控、故障排查 |
| vmstat | 虚拟内存统计 | 内存和 CPU 监控 |
| iostat | 磁盘 I/O 统计 | 磁盘性能分析 |
| netstat | 网络连接统计 | 网络连接监控 |
| top/htop | 进程级监控 | 进程资源使用分析 |
十、总结
dstat 命令是 Linux 系统管理员进行性能监控的强大工具,通过组合不同的选项,可以灵活监控 CPU、内存、磁盘、网络等多种系统资源。其彩色表格输出和实时刷新功能,使得系统性能状态一目了然。无论是日常监控还是故障排查,dstat 都是不可或缺的工具之一。