Linux shell编程学习笔记52: lscpu命令 查看CPU详细信息

0 前言

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

关于 cat /proc/cpuinfo命令,可以参考:

Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Purpleendurer/article/details/139279438?spm=1001.2014.3001.5501

1 lscpu命令 的功能、格式和选项说明

我们可以使用命令 lscpu --help 来查看lscpu命令的帮助信息。

[purpleendurer @ bash ~] lscpu --help

Usage:
 lscpu [options]

Display information about the CPU architecture.

Options:
 -a, --all               print both online and offline CPUs (default for -e)
 -b, --online            print online CPUs only (default for -p)
 -c, --offline           print offline CPUs only
 -e, --extended[=<list>] print out an extended readable format
 -p, --parse[=<list>]    print out a parsable format
 -s, --sysroot <dir>     use specified directory as system root
 -x, --hex               print hexadecimal masks rather than lists of CPUs
 -y, --physical          print physical instead of logical IDs

 -h, --help     display this help and exit
 -V, --version  output version information and exit

Available columns:
           CPU  logical CPU number
          CORE  logical core number
        SOCKET  logical socket number
          NODE  logical NUMA node number
          BOOK  logical book number
        DRAWER  logical drawer number
         CACHE  shows how caches are shared between CPUs
  POLARIZATION  CPU dispatching mode on virtual hardware
       ADDRESS  physical address of a CPU
    CONFIGURED  shows if the hypervisor has allocated the CPU
        ONLINE  shows if Linux currently makes use of the CPU
        MAXMHZ  shows the maximum MHz of the CPU
        MINMHZ  shows the minimum MHz of the CPU

For more details see lscpu(1).
[purpleendurer @ bash ~] 

1.1 lscpu 命令的功能

lscpu从 sysfs 和 /proc/cpuinfo  收集 并显示有关 CPU 架构的信息。

1.2 lscpu 命令的格式

 lscpu [选项]

 1.3 lscpu 命令的选项说明 

选项说明备注

-a

--all

打印在线和离线 CPU信息(默认为 -e)此选项只能与选项-e或-p一起指定

-b

--online

仅打印在线 CPU信息(默认为 -p)此选项只能与选项-e或-p一起指定

-c

--offline

仅打印离线 CPU此选项只能与选项-e或-p一起指定

-e

--extended[=<list>]

打印出扩展的可读格式

以人性化的格式显示cpu信息,如果list参数省略,输出所有可用数据的列,在指定了list参数时,选项的字符串、等号(=)和列表必须不包含任何空格或其他空白。

比如:

’-e=cpu,node’ 

 ’–extended=cpu,node’

-p

--parse[=<list>]

打印出可解析的格式

优化命令输出,便于分析。

如果省略list,则命令的输出与早期版本的lscpu兼容,兼容格式以两个逗号用于分隔cpu缓存列,如果没有发现cpu缓存,则省略缓存列。

如果使用list参数,则缓存列以冒号(:)分隔。

在指定了list参数时,选项的字符串、等号(=)和列表必须不包含空格或者其它空白。

比如:

’-e=cpu,node’ 

’–extended=cpu,node’

-s

--sysroot

使用指定目录作为系统根目录为一个Linux实例收集CPU数据,而不是发出lscpu命令的实例。指定的目录是要检查Linux实例的系统根

-x

--hex

打印十六进制掩码,而不是 CPU 列表使用十六进制来表示cpu集合,默认情况是打印列表格式的集合(例如:0,1)

-y

--physical

打印物理 ID 而不是逻辑 ID

-h

--help

显示此帮助并退出

-V

--version

输出版本信息并退出

 1.4 可用的信息列表项

使用-e 或 -p 选项时可以指定一个信息列表,可用的信息列表项如下: 

信息列表项说明备注
CPU逻辑 CPU逻辑 CPU 数量 = Socket * Core * Thread
CORE逻辑核心数
SOCKET插槽数电脑主板上 CPU 的插槽数量,一般笔记本电脑和台式电脑只有一个,而服务器可能会有多个。如果有两个插槽,通常称为两路
NODE逻辑 NUMA 节点号
BOOKlogical book number
DRAWERlogical drawer number
CACHE显示CPU之间共享的缓存数
POLARIZATION虚拟硬件上的 CPU 调度模式
ADDRESSCPU 的物理地址
CONFIGURED显示虚拟机监控程序是否已分配 CPU
ONLINE显示 Linux 当前是否使用 CPU
MAXMHZ显示 CPU 的最大 MHz
MINMHZ显示 CPU 的最小 MHz

2 lscpu命令使用实例

2.1 不带选项的lscpu命令

2.1.1 实例1 csdn程序研究院系统的信息

[purpleendurer @ bash ~] lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    2
Core(s) per socket:    1
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 85
Model name:            Intel(R) Xeon(R) Platinum
Stepping:              4
CPU MHz:               2500.016
BogoMIPS:              5000.03
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              1024K
L3 cache:              33792K
NUMA node0 CPU(s):     0,1
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
[purpleendurer @ bash ~] 

命令返回信息列及其含义如下: 

信息列说明实例
Architecture架构x86_64
CPU op-mode(s)CPU可选模式32-bit, 64-bit
Byte Order字节顺序Little Endian
CPU(s):逻辑CPU颗数2
On-line CPU(s) list在线CPU列表0,1
Thread(s) per core每个核的线程数2
Core(s) per socket每个cpu插槽核数(每颗物理cpu核数)1
Socket(s)cpu插槽数1
NUMA node(s)逻辑 NUMA 节点号1
Vendor IDCPU厂商IDGenuineIntel
CPU familyCPU系列6
Mode型号85
Model name型号名称Intel(R) Xeon(R) Platinum
Stepping:步进4
CPU MHzCPU主频2500.016
BogoMIPS

在系统内核启动时粗略测算的CPU速度

Bogo是Bogus(伪)的意思

5000.03
Hypervisor vendor虚拟机管理程序供应商KVM
Virtualization type虚拟化类型full
L1d cacheCPU的一级数据缓存大小32K
L1i cacheCPU的一级指令缓存大小32K
L2 cacheCPU的二级缓存大小1024K
L3 cacheCPU的二级缓存大小33792K
NUMA node0 CPU(s)NUMA 节点0 CPU0,1
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

2.1.2 实例2 另一个系统的中信息

 

[purpleendurer @ bash ~] lscpu
Architecture:          aarch64
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
每个核的线程数:1
每个座的核数:  2
Socket(s):             2
Model name:            Phytium,FT-2000/4
CPU max MHz:           2600.0000
CPU min MHz:           1900.0000
BogoMIPS:              3456.00
Flags:                 fp asimd evtstrm aes pmull sha1 sha2 crc32
[purpleendurer @ bash ~] 

 

2.2 lscpu -e:以人性化的格式显示cpu信息

2.2.1 实例1 csdn程序研究院系统的信息

[purpleendurer @ bash ~] lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
0   0    0      0    0:0:0:0       yes
1   0    0      0    0:0:0:0       yes
[purpleendurer @ bash ~]

 

好多数据是0 

2.2.2 实例2 另一个系统的中信息

[purpleendurer @ bash ~] lscpu -e
CPU SOCKET CORE ONLINE MAXMHZ    MINMHZ
0   0      0    是     2600.0000 1900.0000
1   0      1    是     2600.0000 1900.0000
2   1      2    是     2600.0000 1900.0000
3   1      3    是     2600.0000 1900.0000
[purpleendurer @ bash ~] 

 

2.3 lscpu -p:优化命令输出cpu信息

2.3.1 实例1 csdn程序研究院系统的信息 

[purpleendurer @ bash ~] lscpu -p
# The following is the parsable format, which can be fed to other
# programs. Each different item in every column has an unique ID
# starting from zero.
# CPU,Core,Socket,Node,,L1d,L1i,L2,L3
0,0,0,0,,0,0,0,0
1,0,0,0,,0,0,0,0
[purpleendurer @ bash ~] 

2.3.2 实例2 另一个系统的中信息

 

[purpleendurer @ bash ~] lscpu -p
# The following is the parsable format, which can be fed to other
# programs. Each different item in every column has an unique ID
# starting from zero.
# CPU,Core,Socket,Node
0,0,0,
1,1,0,
2,2,1,
3,3,1,
[purpleendurer @ bash ~] 

2.4 关闭指定CPU 

一位网友分享的代码: 

cd /sys/devices/system/cpu/   # 进入CPU目录
 
 
ls -Al |grep 'cpu[0-9]'    # 正规则查询 CPU目录下 所有CPU
drwxr-xr-x. 6 root root    0 2月   5 2018 cpu0
drwxr-xr-x. 6 root root    0 2月   5 2018 cpu1
 
cat ./cpu[0-9]/online    # 查看所有CPU的 online 值
1
1
 
echo 0 > ./cpu1/online   # 将CPU0 关闭
 
cat ./cpu[0-9]/online    
1
0
lscpu |grep -Ei  'on-line|off-line'  # 查看所有CPU的 online 值,可以看到 CPU1 已经被关闭
On-line CPU(s) list:   1
Off-line CPU(s) list:  0

在csdn程序研究院的系统上操作,结果如下:

[purpleendurer @ bash ~] cd /sys/devices/system/cpu/
[purpleendurer @ bash /sys/devices/system/cpu] ls -Al |grep 'cpu[0-9]'    # 正规则查询 CPU目录下 所有CPU
drwxr-xr-x 7 root root    0 5月  29 12:21 cpu0
drwxr-xr-x 7 root root    0 5月  29 12:21 cpu1
[purpleendurer @ bash /sys/devices/system/cpu] cat ./cpu[0-9]/online    # 查看所有CPU的 online 值
1
1
[purpleendurer @ bash /sys/devices/system/cpu] echo 0 > ./cpu1/online   # 将CPU0 关闭
bash: ./cpu1/online: Read-only file system
[purpleendurer @ bash /sys/devices/system/cpu] 

  • 38
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Linux shell 编程是指使用 shell 脚本语言编写程序来控制 Linux 操作系统。以下是一些 Linux shell 编程的详细知识点: 1. shell 脚本语言:shell 脚本语言是一种解释型语言,它可以通过命令行交互式执行,也可以通过 shell 脚本文件执行。shell 脚本语言有多种类型,包括 Bash、Korn、C Shell 等。 2. 变量:shell 脚本可以定义变量,用于存储数据。变量可以是字符串、整数或数组类型。变量名以字母或下划线开头,不能以数字开头。 3. 控制流语句:控制流语句用于控制程序的执行流程,包括 if-then、for、while、case 等。 4. 输入输出:shell 脚本可以通过标准输入输出、重定向和管道等方式进行输入输出操作。标准输入输出是指 shell 脚本默认的输入输出方式。重定向是指将输入输出重定向到文件或设备。管道是指将一个命令的输出作为另一个命令的输入。 5. 函数:shell 脚本可以定义函数,用于封装一段代码并重复使用。函数的定义和调用方式与其他编程语言类似。 6. 正则表达式:shell 脚本支持正则表达式,用于匹配和替换字符串。正则表达式可以用于文件名匹配、文本搜索和替换等操作。 7. 命令行参数:shell 脚本可以接受命令行参数,用于向脚本传递参数。命令行参数可以用于控制程序的执行流程和数据输入输出。 8. 系统调用:shell 脚本可以调用系统命令和函数,用于执行系统级别的操作。系统调用可以用于文件操作、进程管理和网络操作等。 以上是 Linux shell 编程的一些常见知识点,掌握这些知识点可以让你编写出更为高效和灵活的 shell 脚本程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫郢剑侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值