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

news2024/12/25 15:18:32

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

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

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

相关文章

贵州大学24计算机考研数据速览,国家重点实验室22408复试线285分!贵州大学计算机考研考情分析!

贵州大学计算机科学与技术学院坐落在贵州大学北校区(贵阳花溪)。 学院现有教职工139人,其中专职教师126人,教授17人,副教授37人,讲师46人,高级实验师4人,实验师17人。具有博士学位的…

【易错题】数据可视化基础练习题(30道选择题)#CDA Level 1

本文整理了数据可视化基础知识相关的练习题,共30道,适用于想巩固数据可视化知识的同学,也可作为备考CDA一级的补充习题。来源:如荷学数据科学题库(技术专项-可视化)。 1) 2) 3&…

通义千问图像识别功能的23个实用案例

●给出穿搭建议 这位女士佩戴的是一款精致的长款耳坠,设计上融合了复古和现代元素。为了更好地搭配这款耳环,以下是一些建议: 服装风格:由于耳环本身具有一定的华丽感,建议选择简约而优雅的服装来平衡整体造型。可以选…

栈和队列专题(LeetCode)

目录 有效的括号题解代码加解释 用队列实现栈题解代码加解释 设计循环队列题解代码加解释 用栈实现队列题解代码加解释 有效的括号 题解 左括号从s字符串中取出来放入栈中 s中就只有右括号了 那么栈顶的左括号和s的右括号匹配即可 代码中也详细解释了左括号和右括号多少的问题…

如何成为快手外卖代理?本地生活服务平台加盟条件解析

近年来,以抖音、快手和小红书等为代表的互联网大厂纷纷进军本地生活领域,改变美团和饿了么二分天下的这一局面的同时,也让本地生活成为了众多创业者眼中的“香饽饽”。其中,快手凭借着其庞大的用户群体,让快手团购外卖…

关于本人VIP付费文章说明

郑重声明:我写博客只是为了记录分享经验 自从上次写完数据结构系列后我就一直没有登陆,目前也没打算继续开新内容。今天偶然发现我之前写的文章被设为vip文章,要vip解锁才能看,我很确定当初我发布的时候选择的是公开,…

LeetCode 474.一和零

没做出来,最后看了解析,看了半天才懂。 我一开始把这个题当成多重背包来做了,因为有0和1两个参数需要考虑,但是中间很多情况不知道怎么处理。后面看了解析才知道这是个01背包问题,0和1都是一个物品上的属性&#xff0c…

HTML静态网页成品作业(HTML+CSS)——游戏阴阳师介绍网页(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

RDP方式连接服务器上传文件方法

随笔 目录 1. RDP 连接服务器 2. 为避免rdp 访问界面文字不清晰 3. 本地上传文件到服务器 1. RDP 连接服务器 # mstsc 连接服务器step1: 输入mstscstep2: 输入 IP, username, passwd 2. 为避免rdp 访问界面文字不清晰 解决方法: 3. 本地上传文件到服务器 step…

《KAN》论文笔记

原文出处 KAN: Kolmogorov–Arnold Networks (arxiv.org)https://arxiv.org/html/2404.19756v1 论文笔记 What 《KAN: Kolmogorov–Arnold Networks》——我们提出了 KolmogorovArnold Networks (KANs) 作为多层感知器 (MLP) 的有前途的替代方案。 我们表明,这…

小程序自动化辅助渗透脚本(2024)

简介 1.还在一个个反编译小程序吗? 2.还在自己一个个注入hook吗? 3.还在一个个查看找接口、查找泄露吗? 现在有自动化辅助渗透脚本了,自动化辅助反编译、自动化注入hook、自动化查看泄露 注:本工具仅用于学习交流&…

数据库系统概论(个人笔记)(第三部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)3、SQL介绍3.1 SQL查询语言概述3.2 SQL数据定义3.3 SQL查询的基本查询结构3.4 其他基本操作3.5 设置操作3.6 空值3.7 聚合函数3.8 嵌套子查询3.9 数据库的修改 3、SQL…

VSCODE常用插件记录

重点提名: back & ForthBookmarksC/ChighlightSSH FS //SSH插件

SQL2017附加从其他电脑复制过来的mdf数据后出现【只读】无法写入数据

1. 尝试给它所在的文件夹的属性中的“只读”去勾,无果。 2. 其他文章提示是文件的问题。 该错误为文件权限错误,找到该数据库的 数据库文件 和 日志文件,在安全中添加 Authenticated Users 用户的权限,并设置 “完全控制”

Linux:进程控制(二.详细讲解进程程序替换)

上次讲了:Linux:进程地址空间、进程控制(一.进程创建、进程终止、进程等待) 文章目录 1.进程程序替换1.1概念1.2原理1.3使用一个exec 系列函数execl()函数结论与细节 2.多进程时的程序替换3.其他几个exec系…

【链表】Leetcode 82. 删除排序链表中的重复元素 II【中等】

删除排序链表中的重复元素 II 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,3,4,4,5] 输出:[1,2,5] 解题思路 由于链表…

【小呆的力学笔记】连续介质力学的知识点回顾一:运动和变形

文章目录 1. 运动的描述2. 拉格朗日描述下的变形2.1 线元的变化2.2 体元的变化2.3 面元的变化 1. 运动的描述 在连续介质力学中,存在着两种对运动的描述,一种为拉格朗日描述,即通过描述每个物质点的运动来描述整个变形体的运动,也…

电脑如何远程访问?

【天联】的使用场景 电脑远程访问在现代科技的发展中扮演了重要的角色。对于企业和个人用户来说,远程访问的便利性提供了许多机会和可能性。作为一种高效的工具,【天联】具有广泛的应用场景,可以实现异地统一管理、协同办公以及远程数据采集…

一文了解MyBatis

文章目录 MyBatis1. MyBatis的执行流程2. MyBatis是否支持延迟加载3. MyBatis延迟加载的底层原理4. MyBatis的二级缓存机制用过吗5. 谈谈MyBatis框架的优势6. 简单描述MyBatis的工作原理7. MyBatis中的sql标签8. MyBatis中的${}和#{}的区别9. MyBatis中ResulyMap的作用[重要]10…

在Python中实现限定抽奖次数的机制

目录 一、引言 二、需求分析 三、设计思路 四、代码实现 4.1 使用字典存储用户抽奖次数 4.2 使用数据库存储用户抽奖次数 五、扩展与优化 六、总结 一、引言 在当今互联网应用中,抽奖系统作为吸引用户、提高用户参与度和活跃度的重要手段,已经被…