提到 CPU 监控,很多人会先想到 cpustat,也会顺手提到 mpstat。但真正到了要排查 CPU 异常、回看一段时间内的占用变化时,最容易卡住的问题其实不是命令本身,而是没分清谁负责采集、谁负责展示,以及采样间隔和次数该怎么组合。
这篇文章就围绕这个实际场景展开:先说明 cpustat 和 mpstat 的关系,再给出安装方法、实时查看方式、按时间窗口统计的方法,以及如何把结果保存到文件中。看完之后,你可以快速判断该用哪条命令查看当前状态,也能自己拼出 1 分钟、1 小时这类历史采样命令。
先分清:谁负责采集,谁负责查看
cpustat 和 mpstat 都是常见的 CPU 统计工具,并且都来自 sysstat 包。实际使用时,最容易混淆的一点是:cpustat 更偏向采集侧,而真正用来查看 CPU 使用情况、按 CPU 核心输出统计结果的,通常是 mpstat。
也就是说,如果你的目标是查看 CPU 在一段时间内的使用分布,比如用户态、系统态、空闲时间等指标的变化,重点应该放在 mpstat 上。后面的命令示例也都围绕它展开。
先安装 sysstat 工具包
在大多数 Linux 发行版里,mpstat 并不会默认单独提供,而是随 sysstat 一起安装。先把这个包装好,后面的命令才能直接使用。

Debian 系发行版,例如 Ubuntu,可以执行:
sudo apt-get install sysstat
RPM 系发行版,例如 Fedora、CentOS,可以执行:
sudo yum install sysstat
装完之后,就可以直接调用 mpstat。如果系统提示命令不存在,优先检查的就是 sysstat 是否已经正确安装。
如何查看实时使用情况和一段时间内的记录
实时查看所有 CPU
如果你想先确认当前机器的 CPU 正在发生什么,可以直接用下面这条命令:


mpstat -P ALL 1
其中,-P ALL 表示显示所有 CPU,最后的 1 表示每 1 秒刷新一次。这种方式适合做实时观察,尤其是在你已经怀疑某个进程导致 CPU 波动的时候,终端里能直接看到每秒的变化。
按采样间隔和次数组合历史窗口
mpstat 的历史查看思路并不复杂,核心就是把“采样间隔”和“采样次数”组合起来。原文里给出的示例是:
mpstat -P ALL 1 60
这里第一个 1 表示每 1 秒采样一次,第二个 60 表示一共采样 60 次,所以这条命令实际覆盖的是 1 分钟的数据,而不是 1 小时。
如果目标真的是查看过去 1 小时内的持续输出,参数就应该改成每 60 秒采一次、总共采 60 次:
mpstat -P ALL 60 60
这样命令会每分钟输出一次统计结果,连续输出 60 次,整体覆盖 1 小时。理解了这个组合关系之后,你就可以按同样方式调整出其他窗口,例如更短或更长的观察周期。
如何把 CPU 统计结果保存到文件
只在终端里盯实时输出,适合临时观察;但遇到性能抖动、峰值突发或者需要事后复盘的问题时,保留一份完整记录通常更有用。最直接的办法就是把输出重定向到文件:
mpstat -P ALL 60 60 > cpu_usage.txt
这条命令会把 1 小时内的所有 CPU 统计结果写入 cpu_usage.txt。后续无论是自己复查,还是交给同事一起分析,都不需要重新等待一轮采样。
对于排查性能瓶颈来说,这一步很关键。因为很多 CPU 异常并不是你盯着终端时刚好出现,保存结果以后,至少能确保当时的统计数据被完整留住。
遇到权限不足时怎么办
有些系统环境下,mpstat 需要更高权限才能读取完整的 CPU 统计信息。如果执行时出现权限不足,最简单的处理方式就是直接加上 sudo:
sudo mpstat -P ALL 60 60
是否必须使用 sudo,取决于系统配置和当前账户权限。如果命令已经能正常输出完整数据,就不需要额外提升权限;如果报错,再补上即可。
从使用角度看,mpstat 的门槛并不高。关键不是命令多复杂,而是先搞清它负责什么、参数如何对应时间范围,以及什么时候应该顺手把结果落盘。下次再遇到 CPU 突然飙高,与其只看一眼当前值,不如直接用 mpstat 把这一段时间的表现完整拉出来,判断依据会更扎实。







