Linux 系统资源监控命令大全:从负载分析到性能调优
在 Linux 系统管理中,实时掌握系统资源(CPU、内存、磁盘、网络)的使用状态是排查性能问题、优化系统的基础。本文将系统介绍常用的系统资源监控命令,涵盖负载查看、CPU / 内存 / 磁盘 / 网络分析等核心场景,帮助你全面了解系统运行状态。
系统整体负载监控
w:查看当前系统负载概览
w 命令可以快速了解系统的整体负载、登录用户及进程活动,是系统监控的 “第一站”。
1 | w |

输出解析:
- 第一行:系统当前时间、运行时长、登录用户数、1/5/15 分钟平均负载(核心指标)。
- 平均负载:单位时间内等待 CPU 处理的任务数,理想值 ≤ CPU 核心数(如 4 核 CPU 负载≤4 属正常)。
- 第二行及以后:当前登录用户的信息(用户名、登录终端、登录时间、执行的命令等)。
uptime:精简版系统运行状态
uptime 仅输出 w 命令的第一行信息,适合快速查看系统运行时间和平均负载。
1 | uptime |
- 用途:快速判断系统是否处于高负载状态(对比 1/5/15 分钟负载趋势,判断负载是上升还是下降)。
系统资源细化分析工具
vmstat:全面监控进程、内存、IO 和 CPU
vmstat(Virtual Memory Statistics)是分析系统瓶颈的核心工具,可实时输出进程、内存、交换分区、IO 和 CPU 的详细数据。
1 | # 每1秒刷新一次,共刷新3次 |

输出解析(按列分组):
(1)procs:进程状态
r:等待 CPU 时间片的进程数(长期大于 CPU 核心数 → CPU 不足)。b:等待资源的进程数(如 IO、内存,长期大于 1 → 需关注资源瓶颈)。
(2)memory:内存状态
swpd:交换分区使用量(非 0 但si/so为 0 时无需担心)。free:空闲内存量。buff:用于块设备的缓冲内存(即将写入磁盘的数据)。cache:文件系统缓存(从磁盘读取的数据,缓存大且 IO 低 → 效率好)。
(3)swap:交换分区活动
si:每秒从交换分区读入内存的数据量(长期非 0 → 内存不足)。so:每秒从内存写入交换分区的数据量(长期非 0 → 内存严重不足)。
(4)io:磁盘 IO 活动
bi:每秒从磁盘读取的数据量(KB)。bo:每秒写入磁盘的数据量(KB)。- 判断:
bi+bo > 1000且wa(CPU 等待 IO 时间)高 → 磁盘 IO 瓶颈。
(5)system:系统活动
in:每秒中断次数(过高 → 硬件 / 驱动问题)。cs:每秒上下文切换次数(过高 → CPU 调度频繁,可能是多线程竞争激烈)。
(6)cpu:CPU 使用率
us:用户进程占用 CPU 百分比(长期 > 50% → 需优化应用)。sy:内核进程占用 CPU 百分比(us+sy>80% → CPU 资源紧张)。id:空闲 CPU 百分比。wa:等待 IO 的 CPU 时间百分比(>20% → IO 等待严重)。st:被虚拟机盗用的 CPU 时间(仅在虚拟机中有效)。
iostat:磁盘 IO 与 CPU 负载分析
iostat 专注于磁盘 IO 性能和 CPU 使用率统计,适合定位磁盘瓶颈。
1 | # 每1秒刷新一次,共3次(默认显示CPU和磁盘汇总) |


关键指标:
- CPU 部分(同
vmstat的cpu列,新增%nice表示低优先级进程占用)。 - 磁盘部分:
tps:每秒 IO 请求数。kB_read/s/kB_wrtn/s:每秒读写数据量。%util:磁盘使用率(≥100% → 磁盘满负荷,存在瓶颈)。await:IO 请求平均响应时间(>5ms → 磁盘 IO 压力大)。
free:内存使用详情
free 命令用于查看内存和交换分区的使用情况,包括总容量、已用、空闲及缓存。
1 | # 人性化显示(单位为K/M/G) |

输出解析:
- 内存行:
total:总内存;used:已用内存(含缓存);free:完全空闲内存。buff/cache:缓冲(buff)和缓存(cache)的总和(可被系统自动释放)。available:实际可用内存(最关键指标,含可释放的缓存)。
- 交换分区行:
Swap的总容量、已用和空闲(used 过高 → 物理内存不足)。
实用技巧:
清理缓存(需 root 权限):
1
2
3
4
5
6
7
8# 仅清除页面缓存
echo 1 > /proc/sys/vm/drop_caches
# 清除目录项和inode
echo 2 > /proc/sys/vm/drop_caches
# 清除所有缓存
echo 3 > /proc/sys/vm/drop_caches
网络 IO 监控工具
(1)ifstat:简洁的网络流量统计
ifstat 显示各网卡的实时收发流量(需安装,如 yum install ifstat)。
1 | ifstat |
(2)iftop:实时网络带宽监控
iftop 以拓扑图形式显示各连接的带宽占用,适合定位高流量连接(需安装)。
1 | # 监控eth1网卡,显示IP和端口(-i:网卡;-n:不解析域名;-P:显示端口) |
交互操作(在 iftop 界面中):
1/2/3:按不同列排序;n:切换显示 IP / 域名;p:显示端口;q:退出。
进程级资源监控:pidstat
pidstat 是 sysstat 工具集中的一员,可针对单个进程或线程监控 CPU、内存、IO 和上下文切换,适合定位异常进程。
1 | # 监控进程PID=1234的CPU使用(-u:CPU;1 3:每1秒1次,共3次) |
关键指标:
%cpu:进程占用 CPU 百分比;kB_rd/s/kB_wr/s:进程每秒读写磁盘的数据量;cswch/s/nvcswch/s:进程每秒自愿 / 非自愿上下文切换次数(过高可能存在线程竞争)。
系统活动报告:sar
sar(System Activity Reporter)是一款强大的性能监控工具,可收集并展示 CPU、内存、磁盘、网络等历史和实时数据,支持将数据保存到文件供后续分析。
常用场景:
(1)查看 CPU 使用率
1 | # 每10秒1次,共3次 |
(2)查看网络流量
1 | # 查看各网卡的收发数据包和流量(-n DEV:网络接口) |
rxpck/s/txpck/s:每秒收发数据包数;rxkB/s/txkB/s:每秒收发数据量(>5000 kB/s → 流量较高)。
(3)查看内存使用
1 | sar -r 3 5 # 每3秒1次,共5次 |
(4)查看磁盘 IO
1 | sar -d 3 5 # 每3秒1次,共5次 |
(5)查看历史数据
sar 的数据默认保存在 /var/log/sa/ 目录(如 sa21 表示 21 日的数据):
1 | # 查看21日的网络数据 |
硬件信息查询
CPU 信息:/proc/cpuinfo
1 | # 查看物理CPU个数 |
内存信息:/proc/meminfo
1 | # 查看内存总容量、空闲、缓存等详细信息 |
已加载内核模块:lsmod
lsmod 显示当前载入系统的内核模块(如驱动、文件系统模块),信息来自 /proc/modules。
1 | lsmod |