菜鸟科技网

Linux命令如何实时查看CPU使用率?

在Linux系统中,监控CPU使用率是系统管理和性能优化的基础工作,通过命令行工具,管理员可以实时或历史地查看CPU的负载情况、进程级资源占用以及核心利用率,从而快速定位性能瓶颈,本文将详细介绍Linux环境下查看CPU使用率的核心命令及其使用场景,包括tophtopvmstatmpstatsar以及/proc/stat文件解析等方法,并辅以表格对比各工具的适用场景,最后通过FAQs解答常见疑问。

Linux命令如何实时查看CPU使用率?-图1
(图片来源网络,侵删)

top命令:实时动态监控

top是最常用的实时进程监控工具,默认按CPU使用率排序,能直观展示整体负载和各进程的资源占用,执行top后,前五行信息为系统概览:第一行显示系统时间、运行时长、登录用户数和系统负载(1/5/15分钟平均值,负载过高时需警惕);第二行展示任务总数(包括运行、休眠、停止、僵死状态);第三、四行分别显示CPU和内存使用情况,其中CPU部分us(用户进程占用)、sy(系统调用占用)、id(空闲)、wa(I/O等待)是关键指标;第五行为交换分区使用情况,默认按%CPU降序排列,可通过按P切换排序字段,按1切换各核心独立监控视图,按h查看帮助,若wa值持续较高,说明系统存在I/O瓶颈,可能需检查磁盘性能;若us值过高,则需关注占用CPU的进程。

htop命令:增强型实时监控

htoptop的升级版,以彩色界面、树状进程结构和更丰富的交互操作著称,需安装(如sudo apt install htopsudo yum install htop),启动后默认显示CPU使用率柱状图,不同颜色代表用户、系统、中断等占用,进程列表支持鼠标操作,按F2可自定义显示列(如添加CPU%MEM%),按t切换进程树视图(可直观查看父子进程关系),按s跟踪系统调用,相比tophtop的实时刷新更流畅,且支持垂直分屏查看不同信息,适合需要深度分析进程间关系的场景。

vmstat命令:虚拟内存与CPU统计

vmstat(Virtual Memory Statistics)是轻量级系统监控工具,通过vmstat [刷新间隔] [次数]格式输出,如vmstat 2 5表示每2秒刷新一次,共5次,输出结果分为进程(r运行队列长度、b阻塞进程数)、内存(swpd交换分区使用、free空闲内存)、磁盘(bi块读入、bo块写出)、CPU(us用户、sy系统、id空闲、wa等待、st虚拟机占用宿主机CPU)等部分,其中CPU使用率可通过100-id计算,若r值持续大于CPU核心数,说明CPU过载;wa值过高则需优化I/O。vmstat优势在于资源占用极低,适合嵌入脚本或远程低性能主机监控。

mpstat命令:多核心CPU详细统计

mpstat来自sysstat工具包(需安装,如sudo apt install sysstat),用于查看各独立核心的CPU使用情况,默认输出所有核心平均值,加-P指定核心,如mpstat -P ALL 1每秒刷新所有核心数据,输出包含%usr(用户态)、%nice(优先级用户)、%sys(系统)、%iowait%irq(硬件中断)、%soft(软件中断)、%steal(虚拟机偷取)、%idle(空闲)等指标,通过对比各核心负载差异,可发现是否存在核心不均衡问题(如某些核心因进程亲和性设置而过载)。

Linux命令如何实时查看CPU使用率?-图2
(图片来源网络,侵删)

sar命令:历史数据与长期监控

sar(System Activity Reporter)同样是sysstat工具包组件,能记录系统历史性能数据,适合长期趋势分析,通过sudo sar -u [时间间隔] [次数]查看CPU使用率,如sudo sar -u 1 3实时输出3次数据;查看历史数据用sudo sar -u -f /var/log/sysstat/sa[dd]dd为日期),默认输出%user%nice%system%iowait、%steal、%idle,并支持按小时、天聚合统计。sar的优势在于可追溯历史,适合分析周期性性能问题(如夜间批处理任务对CPU的冲击)。

/proc/stat文件:原始数据获取

/proc/stat是Linux内核提供的虚拟文件,存储CPU实时统计信息,可通过cat /proc/stat查看,第一行cpu为所有核心汇总,格式为cpu user nice system idle iowait irq soft steal guest guest_nice,单位为jiffies(节拍数),计算CPU使用率公式为:总使用率=(user+nice+system+irq+soft+steal)/(total-idle)*100%,单核心同理,该方法适合脚本自动化处理,如通过awk提取数据并绘制图表,但需注意不同内核版本字段可能略有差异。

工具对比与适用场景

工具 特点 适用场景 安装需求
top 实时、交互式、默认预装 快速查看进程级CPU占用 无(系统内置)
htop 彩色界面、树状结构、友好 深度分析进程关系、实时监控 需安装(htop包)
vmstat 轻量级、多指标汇总 低性能主机监控、脚本嵌入 无(系统内置)
mpstat 多核心详细统计 定位核心负载不均衡问题 需安装(sysstat包)
sar 历史数据、长期趋势分析 周期性性能问题排查 需安装(sysstat包)
/proc/stat 原始数据、适合脚本 自动化监控、自定义数据处理 无(系统内置)

相关问答FAQs

Q1: 为什么tophtop显示的CPU使用率与vmstat计算结果不一致?
A: 这是因为统计口径不同。tophtop的CPU使用率默认是进程级占用时间与总时间的比值,且包含I/O等待(wa)等状态;而vmstatid为空闲时间,CPU使用率需通过100-id计算,且wa单独列出。top%CPU字段可能包含优先级调整(nice)和虚拟机偷取(steal)等影响,不同工具对“使用率”的定义略有差异,建议结合多个指标综合判断。

Q2: 如何持续监控CPU使用率并记录到日志文件?
A: 可使用tophtop的批处理模式结合重定向,或使用sar的历史记录功能。top -b -n 10 > cpu.log-b为批处理模式,-n为刷新次数,适合短期记录;长期监控可启用sar的自动记录:编辑/etc/default/sysstat,将ENABLED="true",重启服务后,sysstat会每日将数据存至/var/log/sysstat/,通过sar -f查看历史数据,也可用vmstat 1 > vmstat.log持续记录,但需注意日志文件大小管理。

Linux命令如何实时查看CPU使用率?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇