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	: 3processor	: 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	: 3processor	: 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	: 3processor	: 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,留待下回讲解。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派开箱

1.树莓派4B配置 CPU:64位1.5GHZ四核处理器。 GPU:Broadcom VideoCore VI500MHZ 蓝牙5.0 电源Type C(5V 3A),也可以使用排针链接5V锂电池最大放电电流必须达到3A。 还有千兆以太网等以后用到再说。 接下来进入文章重点 2.镜像文件烧录 前期准备:1…

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

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

【leetcode1944--队列中可以看到的人数】

有n人排成一个队列,从左到右编号为0到n-1,height数组记录每个人的身高,返回一个数组,记录每个人能看到几个人。 类比:山峰问题,高的后面的矮的看不见。 从后往前,最后一个元素入栈&#xff0c…

Apifox 更新|编排模式、Markdown 编辑器升级、自动申请 SSL 证书、用户反馈问题优化

Apifox 新版本上线啦! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性: 自动化测试新增「编排模式」Markdown 编辑器全新升级返回响应直接预览 PDF 及视频自动申请 SSL 证书支持配置自定义域名的子目录流式接口支持筛选和清…

Canny算子

Canny算子_百度百科 (baidu.com)https://baike.baidu.com/item/Canny%E7%AE%97%E5%AD%90/8821789?frge_ala 图像处理中最经典的边沿检测算法: Canny边缘检测_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1U4411277i/?spm_id_from333.1007.top_right_bar_…

基于模糊PID控制器的汽车电磁悬架控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊PID控制器的汽车电磁悬架控制系统simulink建模与仿真。 2.系统仿真结果 上面的仿真结果是无控制器和LQG的对比,以及有控制器和LQG的对比仿真。 3.核心程…

win10桌面右键-新建文件夹-死机-修复

死机->任务管理器->重新启动 任务管理器:重新启动“文件资源管理器”或者关闭“文件资源管理器” 快捷键:CtrlAltEsc 关闭后桌面黑屏重新启动:文件->运行新任务->输入 explorer ->确定 死机-> 事件查看器->排查错误 …

Qt串口异步通信案例(从机线程)

文章目录 串口线程类初始化串口类打开串口并发送数据析构函数 窗口设置窗口函数实现 串口线程类 SlaveThread(从机线程) 目的:等待并响应来自主机的请求,然后发送预设的响应数据。 关键行为:线程启动后,通过…

STL库--string

目录 string的定义 string中内存的访问 string常用函数实例解析 string的定义 定义string的方式跟基本类型相同,只需要在string后跟上变量名即可: string str; 如果要初始化,可以直接给string类型的变量进行赋值: string s…

Vue3+vite项目中使用mock模拟接口

安装依赖 分别安装vite-plugin-mock跟mockjs两个插件 npm install -D vite-plugin-mock mockjs vite.config.ts中添加配置,主要是红色标记的配置 注意此处如果配置出错可能是vite-plugin-mock依赖的版本有问题,重新安装一下依赖指定版本即可&#xf…

Pytorch环境配置2.0.1+ Cuda11.7

查找cuda、cudnn、Pytorch(GPU)及cuda和NVIDIA显卡驱动对应关系 查询可支持的最高cuda版本 nvidia-smi查看支持的cuda的版本 CUDA版本对应表 我的显卡驱动是Driver Version:535.40.,那么左边对应的CUDA都可以兼容 右上角为CUDA 版本,可以看…

Ubuntu配置Git

安装git sudo apt install git 查看是否安装成功 git --version 配置git 用github上注册的用户名和邮箱地址,配置git git config --global user.name "username" git config --global user.email "usernameemail.com" 重启ubuntu查看…

Collection(一)[集合体系]

说明&#xff1a;Collection代表单列集合&#xff0c;每个元素&#xff08;数据&#xff09;只包含一个值。 Collection集合体系&#xff1a; Collection<E> 接口 (一&#xff09;List<E> 接口 说明&#xff1a;添加的元素是有序、可重复、有索引。 1. ArrayLi…

vue3中的toRaw API

文章目录 什么是toRaw API&#xff1f;为什么需要toRaw&#xff1f;如何使用toRaw&#xff1f;实际应用场景 这两天在写项目的时候&#xff0c;发现了一个之前没用过的api&#xff0c;于是上网查了一下&#xff0c;发现这个api还是挺常用&#xff0c;所以在这记录一下 什么是t…

【Postman接口测试】第二节.Postman界面功能介绍(上)

文章目录 前言一、Postman前言介绍二、Postman界面导航说明三、使用Postman发送第一个请求四、Postman 基础功能介绍 4.1 常见类型的接口请求 4.1.1 查询参数的接口请求 4.1.2 表单类型的接口请求 4.1.3 上传文件的表单请求 4.1.4 JSON 类…

HCIP-Datacom-ARST自选题库__BGP/MPLS IP VPN简答【3道题】

1.在BGP/MPLSIPVPN场景中&#xff0c;如果PE设备收到到达同一目的网络的多条路由时&#xff0c;将按照定的顺序选择最优路由。请将以下内容按照比较顺序进行排序。 2.在如图所示的BGP/MPLSIP VPN网络中&#xff0c;管理员准备通过Hub-Spoke组网实现H站点对VPM流量的集中管控&am…

C# 配置文件设置详解

文章目录 1. 配置文件在 C# 项目中的作用和重要性2. 不同类型的配置文件app.configconfig.exejson 3. 创建和修改配置文件文件位置添加内容修改内容保存和加载 4. 读取和写入配置文件app.config 文件读取config.exe 文件写入JSON 文件读写 5. 示例代码演示6. 配置文件在安全性方…

【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路

目录 一、污点(Taint) 1.1污点介绍 1.2污点的组成格式 1.3当前 taint effect 支持如下三个选项&#xff1a; 1.4污点的增删改查 1.4.1验证污点的作用——NoExecute 1.4.2验证污点的作用——NoSchedule 1.4.3 验证污点的作用——PreferNoSchedule 1.5污点的配置与管理…

php反序列化学习(1)

1、php面向对象基本概念 类的定义&#xff1a; 类是定义了一件事物的抽象特征&#xff0c;它将数据的形式以及这些数据上的操作封装住在一起。&#xff08;对象是具有类类型的变量&#xff0c;是对类的实例&#xff09; 构成&#xff1a; 成员变量&#xff08;属性&#xf…

基于开源项目HAL STM32F4 +DSP库跑SVPWM开环速度测试

HAL STM32F4 ARM DSP库跑SVPWM开环速度测试 ✨本篇硬件电路和代码来源于此开源项目&#xff1a;https://github.com/MengYang-x/STM3F401-FOC/tree/main&#x1f4cd;硬件电路和项目介绍&#xff0c;立创开源广场&#xff1a;https://oshwhub.com/shadow27/tai-yang-neng-wu-re…