在Linux系统中,监控CPU和内存的使用情况是系统管理和性能优化的基础工作,通过合理的命令和工具,管理员可以实时了解系统资源状态,及时发现瓶颈并采取应对措施,本文将详细介绍Linux查看CPU和内存信息的多种方法,包括常用命令、参数解析及实际应用场景。

查看CPU信息的方法
CPU作为系统的核心组件,其使用率、核心数、型号等信息直接影响系统性能,Linux提供了多种命令来获取CPU相关数据,以下为常用工具及使用方法:
使用lscpu命令查看CPU架构及核心信息
lscpu命令以可读格式显示CPU架构信息,包括处理器型号、核心数、线程数、架构类型等,无需额外参数即可输出详细结果。
lscpu
输出示例包含以下关键字段:
Architecture: CPU架构(如x86_64、aarch64)CPU op-mode(s): 支持的操作模式(如32-bit, 64-bit)Byte Order: 字节序(如Little Endian)CPU(s): 逻辑处理器总数(即线程数)On-line CPU(s) list: 在线运行的CPU核心编号Thread(s) per core: 每个核心的线程数(超线程技术下为2)Core(s) per socket: 每个插槽的核心数Socket(s): CPU插槽数量(物理CPU个数)
解析/proc/cpuinfo文件获取原始CPU数据
/proc/cpuinfo是Linux内核提供的虚拟文件,记录了CPU的详细信息,适用于需要原始数据的场景。
cat /proc/cpuinfo
输出按物理CPU分组,每组包含processor(逻辑处理器ID)、model name(型号)、cpu MHz(主频)、cache size(缓存大小)等字段,通过grep "model name" /proc/cpuinfo | uniq可查看所有CPU型号是否一致。
使用top/htop实时监控CPU使用率
top是动态监控进程资源的经典工具,默认按CPU使用率排序;htop是其增强版,支持彩色显示和交互操作,更直观易用。
top # 默认启动 htop # 需安装,部分系统默认未预装
关键字段解析:
%us: 用户空间CPU使用率%sy: 内核空间CPU使用率%ni: 低优先级进程CPU使用率%id: 空闲CPU率%wa: 等待I/O的CPU率%hi: 硬中断率%si: 软中断率%st: 虚拟机占用宿主CPU的比率(仅在虚拟机中显示)
通过top的1快捷键可切换至每核心CPU监控,查看各核心负载情况。
使用mpstat查看CPU各核心使用率
mpstat是sysstat工具包的一部分,需安装(如yum install sysstat或apt install sysstat),可详细统计每个CPU核心的使用情况。
mpstat 1 5 # 每秒更新一次,共输出5次报告
输出包含%usr、%nice、%sys、%iowait、%irq、%soft、%steal、%idle等指标,通过mpstat -P ALL 1可查看所有核心的独立统计。

使用nproc查看逻辑核心数
若仅需获取逻辑CPU核心数量(即线程数),nproc是最简洁的命令:
nproc
输出结果与lscpu中的CPU(s)字段一致,适用于脚本自动化场景。
查看内存信息的方法
内存是系统运行的临时数据存储区域,监控内存使用情况可避免因内存不足导致的性能问题,以下是查看内存的常用命令:
使用free命令查看内存及swap使用情况
free是查看内存使用最直接的命令,支持-b(字节)、-k(KB)、-m(MB)、-g(GB)等单位切换,-h可自动选择合适单位(如1K、234M、2G)。
free -h
输出字段解析:
| 列名 | 说明 |
|————|——————————-|
| total | 物理内存总量 |
| used | 已使用内存(包括buff/cache) |
| free | 完全空闲内存 |
| shared | 共享内存(如tmpfs) |
| buff/cache | 缓冲区+缓存(可回收内存) |
| available | 可用内存(估算值,更准确) |
| Swap | 交换分区使用情况(结构与物理内存相同) |
注意:used包含buff/cache,而available是系统实际可用的内存(包括free和可回收的buff/cache),后者更能反映内存紧张程度。
解析/proc/meminfo文件获取详细内存参数
/proc/meminfo是内存信息的原始数据文件,包含更底层的参数,如MemTotal、MemFree、Buffers、Cached、SwapTotal、SwapFree等。
cat /proc/meminfo
通过grep "MemAvailable" /proc/meminfo | awk '{print $2}'可获取可用内存的页数,需乘以页面大小(如getconf PAGESIZE)转换为字节。
使用vmstat查看虚拟内存统计
vmstat可监控内存、进程、I/O等系统整体状态,-s参数以表格形式显示内存统计:
vmstat -s
输出示例:

total memory : 16384000 kB
available memory : 8094588 kB
free memory : 523456 kB
buffer memory : 1234567 kB
cached memory : 4567890 kB
swap total : 2097152 kB
swap free : 2097152 kB
实时监控时,vmstat 1会每秒输出内存使用变化,重点关注si(swap进入)和so(swap出去)的值,若持续大于0,说明内存不足,频繁使用swap会降低性能。
使用htop查看内存及进程级内存占用
htop的内存界面以进度条形式展示物理内存和swap使用情况,并通过颜色区分used、buffers、cache,同时列出各进程的内存占用(RES为物理内存,SHR为共享内存,%MEM为内存使用率)。
htop
通过F6可按内存排序,快速定位内存占用高的进程。
使用smem查看进程内存占用及PSS/USS
smem是一款更精确的内存分析工具,可计算进程的PSS(Proportional Set Size,按比例分摊的共享内存)和USS(Unique Set Size,进程独占内存),避免重复计算共享内存导致的误差。
smem -t -k # 以表格形式显示,按内存排序
输出包含PID、Command、USS、PSS、Shared等字段,适用于排查内存泄漏问题。
工具选择与实际应用
| 场景 | 推荐工具 | 优点 |
|---|---|---|
| 快速查看CPU/内存概览 | free -h、lscpu |
简洁直观,无需安装额外工具 |
| 实时监控进程资源 | htop |
彩色界面,支持交互操作和进程级排序 |
| 分析CPU核心负载 | mpstat -P ALL |
详细统计各核心使用情况 |
| 排查内存泄漏 | smem、vmstat -s |
精确计算进程内存占用,避免共享内存重复计算 |
| 脚本自动化 | nproc、free -b、awk '/MemAvailable/ {print $2}' |
输出结构化数据,便于脚本解析 |
相关问答FAQs
Q1: 如何查看CPU温度?
A1: 查看CPU温度需依赖硬件传感器,常用工具为sensors(需安装lm-sensors包),安装后执行sensors即可显示CPU、主板等温度传感器数据,
# 安装lm-sensors(CentOS/RHEL) sudo yum install lm_sensors sudo sensors-detect # 自动检测传感器并配置 # Ubuntu/Debian sudo apt install lm-sensors sudo sensors-detect # 查看温度 sensors
输出中Core Temp或Package id 0即为CPU温度,正常范围通常为30-70℃,持续高于80℃需检查散热。
Q2: 如何判断是否存在内存泄漏?
A2: 内存泄漏是指程序未释放不再使用的内存,导致可用内存逐渐减少,可通过以下步骤排查:
- 观察内存趋势:执行
free -h 1持续监控,若available内存持续下降且si/so(swap交换)不为0,可能存在内存泄漏。 - 分析进程内存:使用
smem -t -k查看进程内存占用,若某进程的USS或PSS持续增长,则可能存在泄漏。 - 使用专业工具:通过
valgrind --tool=memcheck --leak-check=full ./程序名运行程序,可检测内存泄漏的具体位置(需安装valgrind)。 - 对比重启前后内存:重启目标进程后,若内存恢复正常且后续再次泄漏,可确认内存泄漏问题。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28418.html