在 CentOS 系统中,监控和查看 CPU 占用率是系统管理员进行性能分析、故障排查和资源优化的核心任务,一个健康的系统,其 CPU 使用率应处于一个合理的动态平衡中,当系统响应变慢或服务无响应时,CPU 占用率往往是首要的排查对象,本文将详细介绍在 CentOS 中查看 CPU 占用的几种主流方法,从基础到进阶,帮助您全面掌握系统性能监控技能。
使用 top
命令:实时动态监控
top
命令是 Linux 系统中最经典、最常用的性能监控工具之一,它提供了一个动态更新的、交互式的界面,实时显示系统中各个进程的资源占用状况。
在终端中直接输入 top
即可启动:
top
其输出信息主要分为两部分:系统汇总信息和进程列表。
系统汇总信息(前五行)
- 第一行: 系统时间、运行时间、登录用户数、系统负载,三个数值分别代表过去 1 分钟、5 分钟、15 分钟的平均负载。
- 第二行: 任务总数、正在运行、休眠、停止、僵尸进程的数量。
- 第三行(CPU 状态): 这是查看 CPU 占用的核心区域。
us
(user space): 用户空间占用 CPU 的百分比。sy
(system): 内核空间占用 CPU 的百分比。ni
(nice): 改变过优先级的进程占用 CPU 的百分比。id
(idle): 空闲 CPU 的百分比。wa
(I/O wait): 等待 I/O 操作的 CPU 时间百分比,此值过高通常意味着磁盘或网络 I/O 存在瓶颈。hi
(hardware interrupts): 硬件中断占用 CPU 的百分比。si
(software interrupts): 软件中断占用 CPU 的百分比。st
(steal time): 当运行在虚拟化环境中时,被其他虚拟机占用的 CPU 时间。
- 第四行: 内存总量、已用内存、空闲内存、缓冲区内存。
- 第五行: 交换空间总量、已用、空闲、缓存。
进程列表区域
这里列出了当前系统中消耗资源最多的进程,默认按 CPU 使用率降序排列,关键列包括:
PID
: 进程 ID。USER
: 进程所有者。%CPU
: 进程自上次刷新以来占用的 CPU 时间百分比。%MEM
: 进程占用的物理内存百分比。TIME+
: 进程自启动以来累计占用的 CPU 时间。COMMAND
: 进程名/命令行。
常用交互命令:
q
: 退出top
。P
: 按 CPU 使用率排序(默认)。M
: 按内存使用率排序。k
: 终止一个进程,输入进程 PID 即可。1
: 切换显示所有 CPU 核心的详细使用情况。
使用 htop
命令:更友好的 top
htop
是 top
的一个增强版,提供了更直观、更彩色的界面,并支持鼠标操作,它通常不在系统默认安装中,可以通过 yum
或 dnf
安装:
# For CentOS 7 sudo yum install htop # For CentOS 8/9 sudo dnf install htop
htop
的优势在于:
- 可视化: CPU、内存、交换空间的使用情况以进度条形式展示,一目了然。
- 易操作: 可以直接使用鼠标点击列头进行排序,通过 F9 等功能键直观地对进程进行操作(如终止、重定优先级)。
- 信息清晰: 默认显示的进程树结构,能更清晰地看到进程间的父子关系。
使用 ps
命令:查看进程快照
与 top
的实时刷新不同,ps
命令用于捕捉当前某一时刻的进程状态快照,它非常适合用于脚本编写或快速查询特定进程信息。
最常用的组合是 ps aux
:
ps aux
a
: 显示所有用户的进程。u
: 以用户为主的格式来显示进程状态。x
: 显示没有控制终端的进程。
若要按 CPU 占用率排序并查看前 10 个进程,可以结合 sort
和 head
命令:
ps aux --sort=-%cpu | head -n 10
这里的 --sort=-%cpu
表示按 CPU 占用率降序( 代表降序)排列。
使用 vmstat
命令:查看系统整体状态
vmstat
(Virtual Memory Statistics) 主要用于报告虚拟内存统计信息,但它同样提供了宝贵的 CPU 性能数据。
vmstat 1 5
这个命令表示每秒刷新一次,共显示 5 次,输出的 cpu
部分包含:
us
: 用户 CPU 时间。sy
: 系统 CPU 时间。id
: CPU 空闲时间。wa
: 等待 I/O 的 CPU 时间。st
: 被虚拟机偷取的时间。
通过观察 wa
列的值,可以判断系统是否存在 I/O 瓶颈。
工具对比小编总结
工具 | 主要功能 | 优点 | 适用场景 |
---|---|---|---|
top | 实时、交互式监控 | 系统自带,信息全面,功能强大 | 快速定位高耗 CPU 进程,持续监控系统状态 |
htop | 增强版实时监控 | 界面友好,支持鼠标,操作直观 | 替代 top 进行日常监控和进程管理 |
ps | 静态进程快照 | 灵活,适合脚本调用和过滤查询 | 查找特定进程状态,自动化任务 |
vmstat | 系统整体资源快照 | 概览性强,能分析 CPU、内存、I/O 均衡 | 分析系统瓶颈,尤其是 I/O 等待问题 |
相关问答FAQs
问题1:为什么在 top
命令中,所有进程的 %CPU
总和加起来会超过 100%?
解答: 这种情况通常发生在多核心或多处理器的系统上。top
命令中 %CPU
的计算是基于单个 CPU 核心的,对于一个拥有 4 个核心的 CPU,其总处理能力是 400%,如果一个进程能够完全利用所有 4 个核心,那么它的 %CPU
值就会显示为接近 400%,所有进程的 %CPU
值总和超过 100% 是完全正常的,它表明系统正在并行处理任务,你也可以在 top
界面中按 1
键,它会切换显示每个 CPU 核心的独立使用情况,这样就能更清晰地看到负载在各个核心上的分布。
问题2:我发现一个进程持续占用 99% 的 CPU,应该如何处理?
解答: 遇到这种情况,不要立即终止进程,建议按以下步骤排查:
- 识别进程: 在
top
或htop
中记下该进程的PID
和COMMAND
。 - 判断进程性质: 这个进程是系统核心服务(如
ksoftirqd
)、你自己的应用程序,还是未知进程?- 如果是合法的应用进程: 可能是程序正在进行高强度计算(如视频编码、科学计算),可以观察一段时间,看其是否会自动下降,如果这是一个应该很轻量的服务(如 Web 服务器),则可能出现了死循环或性能 bug,需要检查应用程序日志。
-
如果是系统进程: 某些内核进程(如
migration
)在某些情况下出现高占用是正常的,但如果持续异常,可能需要检查系统日志(journalctl
)或内核版本是否存在已知问题。 -
如果是未知或可疑进程: 这可能是恶意软件或挖矿病毒,应立即使用
kill -9 PID
命令强制终止,并检查其启动路径和关联文件,进行全面的安全扫描。
- 优雅地处理: 如果确定需要停止该进程,首先尝试
kill PID
(发送 TERM 信号),让进程有机会自行清理并退出,如果无效,再使用kill -9 PID
(发送 KILL 信号)强制终止。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复