在Linux系统中,监控CPU和内存使用情况是系统管理和性能优化的基础操作,通过命令行工具可以快速获取系统资源状态,帮助定位性能瓶颈,以下是常用的监控方法及工具详解,涵盖实时查看、历史数据统计及关键指标解读。
CPU使用情况监控工具
CPU使用率是衡量系统负载的核心指标,主要包括用户态(%us)、内核态(%sy)、空闲(%id)、等待I/O(%wa)等维度,不同工具可满足不同场景需求。
top:动态实时监控
top
是最基础的进程监控工具,默认按CPU使用率排序,动态刷新进程资源占用情况。
- 基本用法:直接输入
top
,默认每3秒刷新一次。 - 常用选项:
-d 秒数
:设置刷新间隔,如top -d 5
每5秒刷新;-p PID
:监控指定进程,如top -p 1234
;-c
:显示完整命令行而非仅进程名。
- 关键输出字段:
%CPU
:进程CPU使用率(单核);%MEM
:进程内存使用率;us
(用户态)、sy
(内核态)、id
(空闲)、wa
(I/O等待):整体CPU状态,若us+sy
超过80%且id
持续较低,说明CPU繁忙。
- 交互操作:按
P
按CPU排序、M
按内存排序、q
退出。
htop:增强版实时监控(推荐)
htop
是top
的升级版,界面更直观(彩色区分、进程树),支持鼠标操作,需安装(Ubuntu/Debian:apt install htop
;CentOS/RHEL:yum install htop
)。
- 核心优势:
- 可横向滚动查看完整命令行;
- 支持快捷键操作(如
F2
设置、F9
结束进程); - 实时显示CPU核心使用率(多核CPU下更清晰)。
mpstat:多CPU核使用率统计
mpstat
属于sysstat
工具包,可查看每个CPU核心的详细使用情况,适合多核服务器。
- 基本用法:
mpstat -P ALL 1
(每秒刷新,显示所有CPU核状态)。 - 关键输出:
%usr
:用户态CPU使用率;%sys
:内核态CPU使用率;%idle
:空闲率,若持续低于10%,说明CPU过载。
sar:历史数据统计
sar
(System Activity Reporter)可记录系统历史资源使用情况,需安装sysstat
包。
- 查看CPU历史数据:
sar -u -s 09:00:00 -e 18:00:00
(查看当天9点到18点的CPU使用率)。
内存使用情况监控工具
Linux内存管理机制中,buffers
(缓冲区)和cached
(缓存)可被程序复用,实际可用内存”需结合多个指标判断。
free:简洁内存概览
free
是最直观的内存查看工具,默认以KB为单位,推荐使用-h
(人性化单位)或-m
(MB)。
- 基本用法:
free -h
- 关键输出字段:
total
:总内存;used
:已用内存(包含应用+缓存+缓冲区);free
:完全空闲内存;available
:可用内存(free+buffers+cached
,可立即分配给新进程),这是判断内存是否充足的核心指标;buff/cache
:缓冲区+缓存(可回收,非真正“占用”)。
- 示例解读:若
available
持续低于总内存的10%,且swap
被频繁使用,说明内存不足。
/proc/meminfo:原始内存数据
/proc/meminfo
是内核内存管理的原始接口,free
命令的数据来源,适合查看详细参数。
- 关键字段:
MemTotal
:总内存;MemFree
:完全空闲内存;Buffers
:块设备缓冲区;Cached
:页缓存;SwapTotal
/SwapFree
:交换区总大小和剩余大小。
vmstat:虚拟内存统计(含CPU+内存)
vmstat
可同时输出CPU、内存、I/O等状态,适合快速综合判断。
- 基本用法:
vmstat 1
(每秒刷新)。 - 关键输出:
si
(swap in):每秒从交换区调入内存的数据量(KB),若持续大于0,说明内存不足;so
(swap out):每秒写入交换区的数据量;buff
:缓冲区大小;cache
:缓存大小。
smem:进程内存精准统计
smem
可计算进程的实际内存占用(区分PSS/USS,避免重复计算共享内存),适合排查内存泄漏。
- 基本用法:
smem -p -c "pid pss rss"
(按进程显示PID、PSS(实际共享内存)、RSS(物理内存))。
常用命令对比速查
以下为CPU和内存监控工具的核心对比,方便快速选择:
命令 | 主要功能 | 常用选项 | 输出重点 |
---|---|---|---|
top | 实时进程资源监控 | -d (刷新间隔)、-p (PID) |
%CPU、%MEM、负载平均值 |
htop | 增强版实时监控 | 无(需安装) | 多核CPU使用率、进程树、彩色界面 |
mpstat | 多CPU核使用率统计 | -P ALL (所有核) |
各核%usr、%sys、%idle |
free | 内存使用概览 | -h (人性化单位)、-m (MB) |
available、buff/cache、swap |
vmstat | CPU+内存+I/O综合统计 | 1 (每秒刷新) |
si、so、buff、cache、CPU空闲率 |
smem | 进程内存精准分析 | -p (进程)、-c (字段) |
PSS、RSS、进程内存占比 |
FAQs
Q1:为什么free -h
显示的“可用内存”很少,但系统运行并不卡顿?
A:Linux会主动将空闲内存用于buffers
(缓冲区)和cached
(缓存),以提升文件读写性能,这两部分内存可被程序立即回收,实际可用内存”=free+buffers+cached
(即free
命令中的available
字段),若available
充足,即使free
值低,系统也不会卡顿;反之,若available
持续低于总内存的10%,且swap
频繁使用,才说明内存不足。
Q2:top
和htop
有什么区别?如何选择?
A:top
是Linux基础工具,界面简洁,仅支持键盘操作,默认按CPU排序,功能相对基础;htop
是增强版,支持彩色显示、进程树、鼠标操作,可实时调整排序/过滤,功能更丰富,选择时,若只需快速查看资源占用,用top
;若需详细监控(如多核CPU分析、进程树查看)或交互操作,优先用htop
(需先安装,Ubuntu/Debian通过apt install htop
,CentOS/RHEL通过yum install htop
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28410.html