Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息

0 前言

2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。对于中央处理器CPU比如,我们可以使用cat /proc/cpuinfo命令来收集中央处理器CPU的信息。

1. /proc/cpuinfo 保存了系统的cpu信息

在linux系统中,/proc目录下的文件保存了系统的软硬件信息。

[purpleendurer @ bash /] ls -l /proc
total 0
dr-xr-xr-x  9 csdn csdn    0 5月  28 22:19 1
dr-xr-xr-x  9 csdn csdn    0 5月  28 22:22 102
dr-xr-xr-x  9 csdn csdn    0 5月  28 22:22 127
dr-xr-xr-x  9 csdn csdn    0 5月  28 22:23 155
dr-xr-xr-x  9 csdn csdn    0 5月  28 22:24 170
dr-xr-xr-x  9 csdn csdn    0 5月  28 22:19 47
dr-xr-xr-x  9 csdn csdn    0 5月  28 22:19 72
drwxrwxrwt  2 root root   40 5月  28 22:19 acpi
-rw-------  1 root root    0 5月  28 22:23 async_load_calc
-r--r--r--  1 root root    0 5月  28 22:23 buddyinfo
dr-xr-xr-x  4 root root    0 5月  28 22:19 bus
-r--r--r--  1 root root    0 5月  28 22:23 cgroups
-r--r--r--  1 root root    0 5月  28 22:23 cmdline
-r--r--r--  1 root root    0 5月  28 22:23 consoles
-r--r--r--  1 root root    0 5月  28 22:23 cpuinfo
dr-xr-xr-x  3 root root    0 5月  28 22:23 cpusli
-r--r--r--  1 root root    0 5月  28 22:23 crypto
-r--r--r--  1 root root    0 5月  28 22:23 devices
-r--r--r--  1 root root    0 5月  28 22:23 diskstats
-r--r--r--  1 root root    0 5月  28 22:23 dma
dr-xr-xr-x  4 root root    0 5月  28 22:23 driver
dr-xr-xr-x  3 root root    0 5月  28 22:23 dynamic_debug
--w-------  1 root root    0 5月  28 22:23 dyn_isolcpus
-r--r--r--  1 root root    0 5月  28 22:23 execdomains
-rw-r--r--  1 root root    0 5月  28 22:23 fault_events
-r--r--r--  1 root root    0 5月  28 22:23 fb
-r--r--r--  1 root root    0 5月  28 22:19 filesystems
dr-xr-xr-x  9 root root    0 5月  28 22:19 fs
-r--r--r--  1 root root    0 5月  28 22:23 interrupts
-r--r--r--  1 root root    0 5月  28 22:23 iomem
-r--r--r--  1 root root    0 5月  28 22:23 ioports
dr-xr-xr-x 28 root root    0 5月  28 22:19 irq
-r--r--r--  1 root root    0 5月  28 22:23 kallsyms
crw-rw-rw-  1 root root 1, 3 5月  28 22:19 kcore
crw-rw-rw-  1 root root 1, 3 5月  28 22:19 keys
-r--r--r--  1 root root    0 5月  28 22:23 key-users
-r--------  1 root root    0 5月  28 22:23 kmsg
-r--------  1 root root    0 5月  28 22:23 kpagecgroup
-r--------  1 root root    0 5月  28 22:23 kpagecount
-r--------  1 root root    0 5月  28 22:23 kpageflags
-r--r--r--  1 root root    0 5月  28 22:23 loadavg
-r--r--r--  1 root root    0 5月  28 22:23 locks
-r--r--r--  1 root root    0 5月  28 22:23 mdstat
-r--r--r--  1 root root    0 5月  28 22:19 meminfo
dr-xr-xr-x  3 root root    0 5月  28 22:23 memsli
-r--r--r--  1 root root    0 5月  28 22:23 misc
-r--r--r--  1 root root    0 5月  28 22:23 modules
lrwxrwxrwx  1 root root   11 5月  28 22:23 mounts -> self/mounts
-rw-r--r--  1 root root    0 5月  28 22:23 mtrr
lrwxrwxrwx  1 root root    8 5月  28 22:23 net -> self/net
-r--------  1 root root    0 5月  28 22:23 pagetypeinfo
-r--r--r--  1 root root    0 5月  28 22:23 partitions
crw-rw-rw-  1 root root 1, 3 5月  28 22:19 sched_debug
-r--r--r--  1 root root    0 5月  28 22:23 schedstat
drwxrwxrwt  2 root root   40 5月  28 22:19 scsi
lrwxrwxrwx  1 root root    0 5月  28 22:19 self -> 170
-r--------  1 root root    0 5月  28 22:23 slabinfo
-r--r--r--  1 root root    0 5月  28 22:23 softirqs
-r--r--r--  1 root root    0 5月  28 22:23 stat
-r--r--r--  1 root root    0 5月  28 22:23 swaps
dr-xr-xr-x  1 root root    0 5月  28 22:19 sys
--w-------  1 root root    0 5月  28 22:19 sysrq-trigger
dr-xr-xr-x  5 root root    0 5月  28 22:23 sysvipc
lrwxrwxrwx  1 root root    0 5月  28 22:19 thread-self -> 170/task/170
crw-rw-rw-  1 root root 1, 3 5月  28 22:19 timer_list
dr-xr-xr-x  6 root root    0 5月  28 22:23 tty
dr-xr-xr-x  4 root root    0 5月  28 22:23 unevictable
-r--r--r--  1 root root    0 5月  28 22:23 uptime
-r--r--r--  1 root root    0 5月  28 22:23 version
-r--------  1 root root    0 5月  28 22:23 vmallocinfo
-r--r--r--  1 root root    0 5月  28 22:23 vmstat
-r--r--r--  1 root root    0 5月  28 22:23 zerobuddyinfo
-r--r--r--  1 root root    0 5月  28 22:23 zoneinfo
[purpleendurer @ bash /] 

如果想了解和获取系统中CPU的提供商和相关配置信息,则可以查看/proc/cpuinfo。

2.cat /proc/cpuinfo:查看CPU详细信息

2.1 实例

2.1.1 实例1

[purpleendurer @ bash /] cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 85
model name      : Intel(R) Xeon(R) Platinum
stepping        : 4
microcode       : 0x1
cpu MHz         : 2499.442
cache size      : 33792 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit mmio_stale_data retbleed
bogomips        : 4998.88
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:



processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 85
model name      : Intel(R) Xeon(R) Platinum
stepping        : 4
microcode       : 0x1
cpu MHz         : 2499.442
cache size      : 33792 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit mmio_stale_data retbleed
bogomips        : 4998.88
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

[purpleendurer @ bash /] 

2.1.2 实例2

[purpleendurer @ bash ~] cat /proc/cpuinfo
processor	: 0
model name	: Phytium,FT-2000/4
bogomips	: 3456.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32
flags		: fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer	: 0x70
CPU architecture: 8
CPU variant	: 0x1
CPU part	: 0x663
CPU revision	: 3

processor	: 1
model name	: Phytium,FT-2000/4
bogomips	: 3456.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32
flags		: fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer	: 0x70
CPU architecture: 8
CPU variant	: 0x1
CPU part	: 0x663
CPU revision	: 3

processor	: 2
model name	: Phytium,FT-2000/4
bogomips	: 3456.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32
flags		: fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer	: 0x70
CPU architecture: 8
CPU variant	: 0x1
CPU part	: 0x663
CPU revision	: 3

processor	: 3
model name	: Phytium,FT-2000/4
bogomips	: 3456.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32
flags		: fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer	: 0x70
CPU architecture: 8
CPU variant	: 0x1
CPU part	: 0x663
CPU revision	: 3

 

 2.2 返回信息说明

不同的系统返回的信息内容也不尽相同,以下是一些常见的信息项。

输出项含义备注
address sizes可访问地址空间位数
apicid用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
bogomips在系统内核启动时粗略测算的CPU速度Million Instructions Per Second
cache_alignment缓存地址对齐单位
cache sizeCPU二级缓存大小
clflush size每次刷新缓存的大小单位
core id当前物理核在其所处CPU中的编号这个编号不一定连续
cpu cores该逻辑核所处CPU的物理核数比如此处cpu cores 是4个,那么对应core id 可能是 1、3、4、5。
cpu familyCPU产品系列代号
cpuid level执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
cpu MHzCPU的实际使用主频
flags当前CPU支持的功能
fpu是否具有浮点运算单元(Floating Point Unit)
fpu_exception是否支持浮点计算异常
initial apicid
microcode

model

CPU属于其系列中的哪一代的代号
model nameCPU全名,包括处理器品牌。一旦您知道您拥有的 CPU 的确切类型,您就可以查看有关处理器规格的产品文档。CPU属于的名字及其编号、标称主频
processor

系统中逻辑处理核心的编号,从0开始排序。

对于单核处理器,则认为是其CPU编号

对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核

physical id单个CPU的标号
power management 对能源管理的支持
siblings单个CPU逻辑物理核数
steppingCPU属于制作更新版本
vendor_idCPU制造商
wp表明当前CPU是否在内核态支持对用户空间的写保护Write Protection

2.3 关于物理CPU、核数、逻辑cpu数的概念

2.3.1 物理CPU数(physical id)

主板上实际插入的cpu数量,可以数不重复的 physical id 有几个

2.3.2 CPU核心数(cpu cores)

单块CPU上面能处理数据的芯片组的数量,如双核、四核等 

2.3.3逻辑CPU数

一般情况下:

在不支持超线程技术或没有开启次技术的情况下:

逻辑CPU=物理CPU个数×每颗核数

在服务器的CPU支持超线程技术的情况下:

逻辑CPU=物理CPU个数×每颗核数 *2  

简单来说,在这种情况下,处理器中的1 颗内核会像2 颗内核那样在操作系统中发挥作用。

这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能。

3 应用实例

3.1 grep -m 1 'model name' /proc/cpuinfo :显示CPU名称

[purpleendurer @ bash ~] grep -m 1 'model name' /proc/cpuinfo 
model name      : Intel(R) Xeon(R) Platinum
[purpleendurer @ bash ~] 

3.2 grep -c 'model name' /proc/cpuinfo:显示CPU数量

[purpleendurer @ bash ~] grep -c 'model name' /proc/cpuinfo
2
[purpleendurer @ bash ~] 

3.3 grep -c "cpu cores" /proc/cpuinfo : 获取CPU核数

[purpleendurer @ bash ~] grep -c "cpu cores" /proc/cpuinfo
2
[purpleendurer @ bash ~] 

3.4 grep -c "processor" /proc/cpuinfo:获取系统中的逻辑CPU数量

[purpleendurer @ bash ~] grep -c "processor" /proc/cpuinfo 
2
[purpleendurer @ bash ~] 

3.5 grep -c "siblings" /proc/cpuinfo:获取每个物理CPU中逻辑CPU的个数 

[purpleendurer @ bash ~] grep -c "siblings" /proc/cpuinfo
2
[purpleendurer @ bash ~] 

3.6 检测cpu是否使用了超级程Hyper-Threading

我们可以通过比较cpu cores数量和siblings数量来判断:

如果cpu cores数量和siblings数量一致,说明没有启用超线程,否则就是启用了超线程。

我们把cpu cores数量保存到变量a,把siblings数量保存到变量b,然后用if语句比变量a和b的值,并输出相应的结果

[purpleendurer @ bash ~] grep -c "cpu cores"  /proc/cpuinfo
2
[purpleendurer @ bash ~] grep -c "siblings"  /proc/cpuinfo
2
[purpleendurer @ bash ~] a=$(grep -c "cpu cores"  /proc/cpuinfo);b=$(grep -c "siblings"  /proc/cpuinfo);if [ $a = $b ]; then echo 'No Hyper-Threading'; else echo 'Hyper-Threading';  fi
No Hyper-Threading
[purpleendurer @ bash ~] 

 cpu cores数量和siblings数量一致,都是2,说明没有启用超线程。

4.其它相关命令

 除了利用/proc/cpuinfo文件,我们还可以使用其它命令,比如 lscpu、nproc,留待下回讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/657409.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习心得】PyTorch的知识要点复习(持续更新)

PyTorch知识要点复习,目的是为了巩固PyTorch基础、快速回顾、深化理解PyTorch框架。这篇文章会持续更新。 一、本文的一些说明 知识点梳理:我将PyTorch的核心概念和高级技巧进行了系统化的整理,从基础的张量操作到复杂的模型构建与训练。这样…

拉普拉斯IPO:科技与产业深度融合,实现业务领域延展

我国拥有全球最具竞争优势的光伏产业链,基于降本增效的需求,光伏产业对于技术革新具有持续的需求。拉普拉斯新能源科技股份有限公司(以下简称“拉普拉斯”)凭借深厚的技术积累,以及对光伏产业深刻的理解,聚…

【数据结构】AVL树——平衡二叉搜索树

个人主页:东洛的克莱斯韦克-CSDN博客 祝福语:愿你拥抱自由的风 目录 二叉搜索树 AVL树概述 平衡因子 旋转情况分类 左单旋 右单旋 左右双旋 右左双旋 AVL树节点设计 AVL树设计 详解单旋 左单旋 右单旋 详解双旋 左右双旋 平衡因子情况如…

基于ViutualBox+Ubuntu(Linux)的开发环境搭建

实际在选择虚拟机的时候纠结了要用virualbox还是vmware,初步比较结果: 1.virualbox能够使用vmware的硬盘格式,因此可以自由选择。 2.都能够实现主机和宿主机之间的文件夹共享。 3.virualbox是自由软件,vmware是商业软件。 在功能上…

Matplotlib 实践指南:图形样式、风格与标记探索

目录 前言 第一点:导入模块 第二点:创建二维图 第三点:创建统计图 总结 前言 Matplotlib 是一个强大的数据可视化库,可用于创建各种类型的图形。在本文中,我们将研究如何在 Matplotlib 中设置图形的颜色、风格和标记…

CANDela studio之CDDT与CDD

CDDT有更高的权限,作为模板规范CDD文件。 CDD可修改的内容比CDDT少。 CDDT根据诊断协议提供诊断格式,主要就是分类服务和定义服务,一般是OEM释放,然后由供应商细化成自己零部件的CDD文件。 在这里举个例子,OEM在CDDT…

Dubbo生态之初识分布式事务

1.分布式事务简介 传统的关系型数据库只能保证单个数据库中多个数据表的事务特性。一旦多个SQL操作涉及到多个数据库,这类的事务就无法解决跨库事务问题。在传统架构下,这种问题出现的情况非常少,但是在分布式微服务架构中,分布式…

Golang | Leetcode Golang题解之第117题填充每个节点的下一个右侧节点指针II

题目: 题解: func connect(root *Node) *Node {start : rootfor start ! nil {var nextStart, last *Nodehandle : func(cur *Node) {if cur nil {return}if nextStart nil {nextStart cur}if last ! nil {last.Next cur}last cur}for p : start; …

NDIS协议驱动(四)

NDIS 定义对象标识符 (OID) 值,以标识适配器参数,其中包括设备特征、可配置设置和统计信息等操作参数。 协议驱动程序可以查询或设置基础驱动程序的操作参数。 NDIS 还为 NDIS 6.1 及更高版本的协议驱动程序提供直接 OID 请求接口。 直接 OID 请求路径支…

5-时间、日期与组合框

时间、日期与组合框 1 日期时间1.1 日期时间相关的类1.2 日期、时间和字符串的转换1.3 例子 2、组合框2.1 QComboBox2.2 QPlainTextEdit2.3 案例 3、自定义右键菜单 1 日期时间 1.1 日期时间相关的类 QTime 时间数据类型,仅表示时间,如:15:…

nano机器人2:机械臂的视觉抓取

前言 参考链接: 【机械臂入门教程】机械臂视觉抓取从理论到实战 GRCNN 通过神经网络,先进行模型训练,在进行模型评估。 机械臂逆运动学求解 所有串联型6自由度机械臂均是可解的,但这种解通常只能通过数值解法得到,计算难度大&am…

Python | Leetcode Python题解之第118题杨辉三角

题目: 题解: class Solution:def generate(self, numRows: int) -> List[List[int]]:ret list()for i in range(numRows):row list()for j in range(0, i 1):if j 0 or j i:row.append(1)else:row.append(ret[i - 1][j] ret[i - 1][j - 1])ret…

如何批量提取pdf文件名?批量提取文件夹里的文件名,只要用对方法!

在数字化时代,PDF文件已经成为我们日常工作中不可或缺的一部分。然而,随着PDF文件数量的不断增加,如何高效地管理这些文件成为了一个挑战。批量提取PDF文件名,就是解决这一问题的关键所在。本文将为你介绍几种实用的方法&#xff…

【Game】Powerful

文章目录 【小伙伴】隐藏小伙伴 【百趣集】【人物属性点】【宠物打造】【奇遇】【钓鱼】 【小伙伴】 刷新位置 小伙伴等级详情 克制关系 隐藏小伙伴 1、仙缘小伙伴(6种) 遇到仙缘驭宠师然后进入战斗抓取 107、七彩仙凤 108、小青兔 109、小布 110、黑腹蛛…

基于jeecgboot-vue3的Flowable增加表单功能(二)

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 接上一节 6、增加一个types.ts 类型 export interface FormForm {id: number | string | undefined;formName: string;formContent?: string;remark: string; } 7、api增加一个getForm…

【Java】【python】leetcode刷题记录--双指针

双指针也一般称为快慢指针,主要用于处理链表和数组等线性数据结构。这种技巧主要涉及到两个指针,一个快指针(通常每次移动两步)和一个慢指针(通常每次移动一步)。快指针可以起到’探路‘的作用,…

【Mybatis】映射文件中获取参数的符号#{}和${}的区别

在xml映射文件中获取参数的符号都是用的#{}的方式,其实Mybatis还支持另一种符号来接收传递过来的参数值,就是${},他们是区别就在与底层使用jdbc的statement不一样 #{}对应的是PreparedStatementd对象来执行sql语句 ${}对应的是Statement对象…

C语言-01_HelloWord

文章目录 1.C程序运行机制2.HelloWorld的剖析① main()② 函数体③ printf()④ 标准库、头文件 3.输出3.1 printf()标准格式3.2 占位符3.3 输出格式 1.C程序运行机制 过程1:编辑 编写C语言源程序代码,并已文件的形式存储到磁盘中。源程序文件以“.c”作…

100个 Unity小游戏系列五 -Unity 抽奖游戏专题三老虎机游戏

一、演示效果 二、知识点讲解 2.1 布局 public void CreateItems(SlotsData[] slotsData){isInited false;slotsPrizeList new List<SlotsData>();for (int i 0; i < slotsData.Length; i){var item slotsData[i];slotsPrizeList.Add(item);}float bottomY -it…

AI赋能数字人:打造与语音节奏完美匹配的高质量手势动画

在数字化时代,人机交互正以前所未有的速度进化,而AI数字人的发展正是这一进程中的重要里程碑。近期,一项旨在根据语音内容自动生成匹配手势的技术方案引起了广泛关注,该技术不仅增强了数字人的表现力,也为远程沟通、教育、娱乐等多个领域带来了革新性的应用潜力。本文将深…