在Linux系统中,监控CPU使用率是系统管理和性能优化的基础操作,通过命令行工具可以快速获取CPU的实时负载、进程级占用等关键信息,以下是常用命令的详细说明及使用方法。

top命令:动态实时监控
top是Linux中最常用的进程监控工具,默认按CPU使用率排序,实时显示进程信息,其核心参数及功能如下:
- 交互操作:按P键按CPU使用率降序排序,按M键按内存使用率排序,按c切换命令全路径显示,按k终止指定进程。
- 头部信息解读:- %us:用户空间进程占用CPU百分比。
- %sy:内核空间占用CPU百分比。
- %id:CPU空闲百分比。
- %wa:等待I/O的CPU时间百分比。
- load average:1分钟、5分钟、15分钟系统负载均值,超过CPU核心数则表示高负载。
 
示例:top -b -n 1(非交互模式,输出一次后退出)可生成CPU使用率快照。
htop命令:增强版top(需安装)
htop以彩色界面和树状结构展示进程信息,更直观易用:
- 功能特点:支持鼠标操作、进程树可视化(F5切换)、实时绘制CPU使用率图表。
- 安装方法:在Debian/Ubuntu系统中运行sudo apt install htop,在RHEL/CentOS中运行sudo yum install htop。
示例:直接输入htop即可进入交互界面,按F2可自定义显示列。

mpstat命令:多核CPU详细统计
mpstat来自sysstat包,用于分析每个CPU核心的使用情况:
- 常用参数:- -P ALL:显示所有CPU核心的统计信息。
- -u:仅显示CPU使用率(默认)。
- 1 5:每秒更新一次,共更新5次。
 
示例:mpstat -P ALL 1 3会三次显示每个核心的实时CPU占用,帮助定位高负载核心。
vmstat命令:虚拟内存与CPU综合统计
vmstat提供进程、内存、I/O、CPU等多维度数据:
- CPU相关列:- us:用户进程占用CPU。
- sy:内核进程占用CPU。
- id:CPU空闲。
- wa:等待I/O。
 
示例:vmstat 2 5每2秒刷新一次,共5次,关注us+sy是否接近100%判断CPU繁忙程度。

/proc/stat文件:原始CPU数据读取
直接读取系统虚拟文件/proc/stat可获取未处理的CPU数据:
- 关键字段:cpu行包含用户态(user)、内核态(system)、空闲(idle)等CPU时间(单位:jiffies)。
- 计算公式:CPU使用率 = (1 - idle / total) * 100%,其中total = user + nice + system + idle + iowait + ...。
示例:通过grep 'cpu ' /proc/stat结合awk计算实时CPU使用率。
glances命令:系统资源全景监控(需安装)
glances是跨平台监控工具,以仪表盘形式展示CPU、内存、磁盘、网络等信息:
- 功能:支持自动排序、警告阈值设置、日志导出。
- 安装:sudo pip install glances(需Python环境)。
示例:glances -s启动服务器模式,glances -c IP连接远程监控。
ps命令:进程级CPU占用查询
ps可查看特定进程的CPU使用情况:
- 常用参数:- -eo pid,ppid,cmd,%cpu,%mem:按指定格式显示进程ID、父进程ID、命令、CPU占用、内存占用。
- --sort=-%cpu:按CPU使用率降序排序。
 
示例:ps --sort=-%cpu -eo pid,cmd,%cpu | head -n 10查看CPU占用最高的10个进程。
相关问答FAQs
Q1: 为什么top显示的CPU使用率与mpstat不一致?
A: 两者统计粒度不同,top默认显示所有CPU的平均值,而mpstat -P ALL可查看单个核心的占用,若系统存在多核负载不均(如某个核心被进程独占),会导致整体平均值与单核数据差异较大,top的%wa(I/O等待)可能被部分工具计入CPU使用率,需结合iostat排查I/O瓶颈。
Q2: 如何持续监控CPU使用率并记录到日志?
A: 可使用top -b -n 1 | grep "Cpu(s)" >> cpu.log每秒记录一次CPU使用率(需配合while循环),或用sar -u 1 -o cpu.dat(需安装sysstat)将数据保存到二进制文件,后通过sar -f cpu.dat查看历史记录,对于长期监控,建议使用cron定时任务或collectd等工具自动化采集。

 
                             
         
         
         
         
         
         
         
         
         
        