百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何查询 Linux 中 CPU 的数量?这几个命令要知道!

gudong366 2025-04-15 12:12 14 浏览

在深入命令之前,先聊聊为什么要关心 CPU 数量。想象一下,你是个系统管理员,手底下管着几十台服务器,突然有台机器跑任务慢得像乌龟,你得搞清楚是不是 CPU 不够用。或者你是程序员,想写个多线程程序,得知道能开多少线程才不会把系统榨干。又或者你只是个好奇的 Linux 小白,想摸清自己电脑的“底细”。不管哪种情况,了解 CPU 数量都是第一步,它能帮你优化资源、排查问题,甚至还能满足你的好奇心。

在 Linux 中,CPU 数量其实分了好几个层面:物理 CPU(也就是插在主板上的芯片)、每个 CPU 的核心数(Core),还有逻辑 CPU(考虑超线程后的总数)。这篇文章会带你用各种命令把这些信息挖出来,绝不含糊!

CPU 的基本概念

在动手敲命令之前,咱们得弄清楚几个术语,不然看到一堆数字可能会晕:

  • 物理 CPU:这是硬件层面,指主板上插了几块 CPU 芯片。家用电脑通常就一块,但服务器可能有好几块。
  • 核心数(Cores):每个物理 CPU 里有多少个“计算单元”。一个核心就能独立跑任务,多核心就像多条生产线。
  • 线程数(Threads):有些 CPU 支持超线程技术(比如 Intel 的 Hyper-Threading),一个核心能模拟成两个“逻辑核心”,也就是线程。线程数往往是核心数的两倍(如果开了超线程)。
  • 逻辑 CPU:这是操作系统能看到的“总 CPU 数量”,等于物理 CPU 数 × 核心数 × 每核心线程数。

举个例子:一台机器有 2 个物理 CPU,每个 CPU 有 4 个核心,开了超线程(每核心 2 线程),那逻辑 CPU 数量就是 2 × 4 × 2 = 16 个。明白了这层关系,后面看命令输出就不会懵了。

查询 CPU 数量的命令

好了,铺垫够了,接下来是重头戏!我会介绍 7 个常用的命令,从简单到复杂,带你把 CPU 信息翻个底朝天。每个命令我都会讲用法、输出啥、怎么解读,还会加点小技巧,让你用起来得心应手。

1.lscpu:一键看全貌

先从最方便的开始。lscpu 是查询 CPU 信息的“瑞士军刀”,简单一敲,就能把 CPU 的全貌展示出来。咱们直接上终端试试:

lscpu 

输出可能长这样:

别被一堆信息吓到,咱们挑重点看:

这个命令的好处是信息全,一目了然,连 CPU 型号、频率、缓存大小都给你列出来了。平时查 CPU 数量,我最爱用这个,省心又高效。

小贴士:想只看某项信息?可以用 grep 过滤,比如 lscpu | grep "CPU(s)"


2.nproc:直截了当查总数

如果你只关心逻辑 CPU 数量,不想看那么多细节,nproc 是你的好帮手。它简单粗暴,直接扔给你一个数字:

nproc 

输出:

就这么一行,告诉我这台机器有 16 个逻辑 CPU。干净利落,适合懒人或者写脚本的时候用。比如你想在脚本里动态调整线程数,直接用 nproc 取值就行:

THREADS=$(nproc) echo "开 $THREADS 个线程跑任务吧!" 

小技巧:可以用 nproc --all 确保显示所有可用 CPU(默认也是这样),或者用 nproc --ignore=2 减掉 2 个 CPU,留点余量给系统。


3.top:动态监控顺便看 CPU

top 是 Linux 用户的老朋友,主要用来实时监控系统资源,但它也能帮你查 CPU 数量。敲下命令:

top 

界面会显示一堆进程信息,顶部是 CPU 使用率概览,默认是总的百分比。但咱们要看每个 CPU 的情况,按下键盘上的 1 键,界面会切换成这样:

%Cpu0%Cpu15,一共 16 行,说明有 16 个逻辑 CPU。每一行后面是使用率(us 是用户态,sy 是系统态,id 是空闲),你还能顺便看看每个 CPU 忙不忙。

优点:动态查看,能同时监控负载。 缺点:得手动按 1,信息没 lscpu 那么全。


4.htop:花哨版 top

htoptop 的升级版,界面更友好,默认就能直观显示 CPU 数量。运行:

htop 

顶部会有一堆小横条,每个条代表一个逻辑 CPU。我这台机器显示 8 个条,颜色表示使用情况(绿色是用户态,蓝色是系统态,红色是中断)。比 top 美观多了吧?

如果没装 htop,可以用包管理器装一下,比如 Ubuntu 上跑 sudo apt install htop

小技巧:按 F2 进入设置,可以调整显示方式,比如只看核心数,隐藏线程信息。


5.cat /proc/cpuinfo:深入硬件细节

想挖得更深?那得试试 /proc/cpuinfo,这是 Linux 提供的一个虚拟文件,里面藏着 CPU 的全部秘密。直接敲:

cat /proc/cpuinfo 

输出会很长,每段是一个逻辑 CPU 的信息,比如:

一直到 processor : 15,一共 16 段,说明有 16 个逻辑 CPU。重点字段:

  • physical id:物理 CPU 的编号,全是 0 说明只有 1 个物理 CPU。
  • cpu cores:8,每个物理 CPU 有 8 个核心。
  • siblings:16,每个物理 CPU 的逻辑线程数。

这个命令信息量大,适合喜欢刨根问底的人。不过输出太长,手动数有点累,下面有个偷懒的方法。


6.grep -c ^processor /proc/cpuinfo:快速计数

cat /proc/cpuinfo 太啰嗦?用 grep 配合它,能一秒告诉你逻辑 CPU 数量:

grep -c ^processor /proc/cpuinfo 

输出:

这里的 -c 是计数,^processor 匹配每段开头的 processor 行。简单粗暴,和 nproc 有异曲同工之妙,但来源更“原始”。


7.dmidecode -t processor:硬件直击

最后一个命令稍微硬核点,dmidecode 可以直接读取硬件信息,但需要 root 权限。跑一下:

sudo dmidecode -t processor 

输出很详细,比如:

重点看:

  • Core Count:8,物理核心数。
  • Thread Count:16,逻辑线程数。

这个命令直接从 BIOS 拿数据,比前面几个更贴近硬件,但需要 sudo,而且输出偏底层,适合服务器管理员。

别踩这些坑

用这些命令时,有些细节得留心:

  • 权限问题dmidecode 需要 root 权限,普通用户跑会报错,用 sudo 解决。
  • 命令可用性htop 不是默认装的,查不到就先安装。
  • 虚拟化环境:在虚拟机里跑,显示的可能是分配的虚拟 CPU,和物理硬件不一定对得上。
  • 多 CPU 系统:如果有多个物理 CPU(Socket > 1),注意区分物理和逻辑,别算错了。

相关推荐

理解Linux进程和线程(linux的进程和线程的区别)

#进程-进程是一个执行中的程序,它拥有自己独立的内存空间,不同进程的地址空间是相互隔离的。-进程有自身的代码段,数据段,堆,栈等。进程需要耗费资源创建和销毁。-进程之间的通信需要借助IPC(I...

Linux进程上下文切换过程context_switch详解

1前言1.1Linux的调度器组成2个调度器可以用两种方法来激活调度一种是直接的,比如进程打算睡眠或出于其他原因放弃CPU另一种是通过周期性的机制,以固定的频率运行,不时的检测是否有必要因此...

linux init进程(linux init 1)

一.init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通...

【Linux系统编程】特殊进程之守护进程

01.守护进程概述守护进程(DaemonProcess),也就是通常说的Daemon进程(精灵进程),是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地...

在 Linux 中如何强制停止进程?kill 和 killall 命令有什么区别?

在日常工作中,您会遇到两个用于在Linux中强制结束程序的命令;kill和killall。虽然许多Linux用户都知道kill命令,但知道并使用killall命令的人并不多。这两个命令...

嵌入式Linux系统编程——连进程间通信都不懂,还自称linux大神?

所有学嵌入式Linux系统的看过来了,以下内容是每一位想学习Linux嵌入式系统想要了解的内容,真的很想要分享给大家!本文分享的内容主要如下几个方面:(绝对的精品资料,不收藏可惜了)6.1共享内存...

Linux基础运维篇:Linux进程与服务管理(第010课)

在Linux系统里,进程和服务管理就像是一个大管家的工作,得把各种程序的运行安排得明明白白,这样系统才能稳稳当当地干活。进程就是程序跑起来的一个实例,服务呢,是那种一直在后台默默工作的进程,咱下面...

深度剖析Linux内核《如何唤醒线程》

linux内核如何唤醒线程//本文代码片段出自linux内核版本:4.1.15linux内核唤醒线程主要使用wake_up_process()。一、wake_up_process()分析在linux内...

字节因它而跳动!顶级资深大牛整理的“深入理解Linux内核”

如果你对Linux如何工作。其性能又为什么会如此之高怀有强烈的好奇心。你将会从这里找到答案.阅读本文之后,你会通过上千行代码找到自己的方式来区别重要数据结构和次要数据结构的不同,简而言之,你蒋成为一名...

都说Linux内核很吊,它到底是个啥玩意儿?

了解完基本信息之后,我们来看一看,为什么说它吊?吊在哪里?甚至我觉得不仅仅是c/c++Linux开发的可以学习,Java、Python等方面的都可以学习提升一下。linux内核有什么用?linux内核...

77% 的 Linux 运维都不懂的内核问题,这篇全告诉你了

前言之前在实习时,听了OOM的分享之后,就对Linux内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间的积累,对内核内存有一定了解之后,今...

Linux 内核开发流程的一个典型例子

>authorLinusTorvalds<torvalds@linux-foundation.org>2025-07-0813:31:29-0700>committ...

Vold原理介绍(volte基本原理)

一、Vold简介Android中Vold是volumeDaemon,即Volume守护进程,用来管理Android中存储类的热拔插事件。这里的热插拔涉及的场景如:手机usb以MTP或者传输照片方式...

2-剖析Linux内核源码分析《中断处理》

一、中断向量及汇编指令1、中断向量Intelx86系列机器共支持256种向量中断,Intel用一个8位无符号整数叫做一个向量,因此也叫中断向量。所有256种中断可分为两大类:异常和中断,异常又称为故...

剖析linux内核(一文看懂linux内核)

PASmm_struct详解malloc()函数是用户态常用的分配内存接口,mmap()函数是用户态常用创建文件映射或匿名映射。进程地址空间在linux内核当中使用structvm_area...