上一篇
Linux如何查看CPU核数?
- Linux
- 2025-06-04
- 3313
在Linux中查看CPU核数,常用命令:,1.
lscpu :清晰显示核心数(
CPU(s)和
Core(s) per socket),2.
grep -c 'processor' /proc/cpuinfo :统计逻辑核心数,3.
nproc :直接输出总可用处理单元数,推荐首选
lscpu 获取详细信息。
在Linux系统中,查看CPU核数是性能优化、资源分配和故障排查的基础操作,以下详细介绍多种可靠方法,涵盖不同场景需求:
核心概念速览
- 物理核心(Physical Cores):CPU硬件实际存在的核心。
- 逻辑核心(Logical Cores):通过超线程技术(Hyper-Threading)虚拟的核心,一个物理核心可拆分为多个逻辑核心。
- 总逻辑核心数 = 物理核心数 × 每个核心的线程数
查看CPU核数的6种方法
lscpu 命令(推荐)
lscpu
输出关键信息:
Architecture: x86_64 CPU(s): 24 # 总逻辑核心数 Thread(s) per core: 2 # 每个物理核心的线程数 Core(s) per socket: 6 # 每个CPU插槽的物理核心数 Socket(s): 2 # CPU插槽数(物理CPU数量)
计算公式:
物理核心总数 = Socket(s) × Core(s) per socket = 2 × 6 = 12
逻辑核心总数 = CPU(s) = 24

/proc/cpuinfo 文件解析
cat /proc/cpuinfo
- 统计逻辑核心数:
grep -c "processor" /proc/cpuinfo # 输出:24
- 统计物理核心数(需去重):
grep "core id" /proc/cpuinfo | sort -u | wc -l # 输出:12
nproc 命令(快速获取逻辑核心数)
nproc --all # 输出:24(总逻辑核心)
top 命令动态查看
- 运行
top - 按
1键:top - 15:20:30 up 10 days, 1:23, 2 users, load average: 0.05, 0.10, 0.15 Tasks: 256 total, 1 running, 255 sleeping, 0 stopped, 0 zombie %Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st ...(共24行,每行代表一个逻辑核心)
dmidecode 查看物理CPU信息
sudo dmidecode -t processor
Socket Designation: CPU1 Core Count: 6 # 当前物理CPU的核心数 Thread Count: 12 # 当前物理CPU的线程数
hwloc 工具(高级拓扑分析)
安装后使用:
sudo apt install hwloc # Debian/Ubuntu hwloc-ls --of console
输出:图形化显示CPU、缓存、NUMA节点拓扑结构。

应用场景建议
| 场景 | 推荐命令 | 原因 |
|---|---|---|
| 快速获取逻辑核心数 | nproc |
简洁高效,适合脚本调用 |
| 详细分析CPU架构 | lscpu |
信息全面,包含物理/逻辑核心 |
| 脚本自动化统计 | /proc/cpuinfo |
文件解析灵活可靠 |
| 实时监控CPU负载分布 | top(按1键) |
动态观察各核心利用率 |
| 服务器硬件审计 | dmidecode |
获取物理CPU型号和配置 |
常见问题解答
Q1: 超线程如何影响核心数?
超线程技术(如Intel HT)让一个物理核心模拟为两个逻辑核心,通过 lscpu 的 Thread(s) per core 值判断:若为2,则启用了超线程。
Q2: 为什么 /proc/cpuinfo 中的 processor 编号从0开始?
Linux内核从0开始索引逻辑核心,编号0到23代表24个逻辑核心。

Q3: 云服务器看到的核数是真实的吗?
虚拟化环境中(如AWS、Azure),nproc 显示的是分配给虚拟机的vCPU数量,可能少于宿主机物理核心。
- 逻辑核心总数 =
nproc或grep -c processor /proc/cpuinfo - 物理核心总数 =
lscpu | grep "Core(s)"×Socket(s) - 是否启用超线程 = 检查
Thread(s) per core是否 >1
ℹ️ 引用说明:
本文方法基于Linux内核文档(man proc、man lscpu)及GNU Coreutils工具集,符合POSIX标准。dmidecode数据来源于系统SMBIOS规范,需root权限以确保准确性。
