Linux工具|运维工具lspci使用小妙招

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师
🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员
🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~

1 背景说明

运维工程师(Operations)是负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体的ROI的专业人员。他们的基本职责是负责服务的稳定性,确保服务可以7*24H不间断地为用户提供服务。
作为一名运维工程师,操作系统知识 怎么可以落下,我们需要深入理解Linux系统,包括其文件系统、进程管理、用户和权限管理等。今天就先讲讲如何查看计算机设备篇——PCI总线设备的信息。到了这里,实践得出真理,开始动手操作下吧。毕竟,这些基础的知识也是需要我们操作的熟练。从上面简介中,你已经猜测出来我此时说的这个系统自带的小工具叫什么名字吧?

2 环境检查

2.1 什么是PCI

【PCI】介绍
PCI是一种外设总线规范。我们先来看一下什么是总线:总线是一种传输信号的路径或信道。典型情况是,总线是连接于一个或多个导体的电气连线,总 线上连接的所有设备可在同一时间收到所有的传输内容。总线由电气接口和编程接口组成。本文讨论Linux 下的设备驱动,所以,重点关注编程接口。
PCI是Peripheral Component Interconnect(外围设备互联)的简称,是普遍使用在桌面及更大型的计算机上的外 设总线。PCI架构被设计为ISA标准的替代品,它有三个主要目标:获得在计算机和外设之间传输数据时更好的性能;尽可能的平台无关;简化往系统中添加和 删除外设的工作。
【lspci】介绍
lspci 是一个用来显示系统中所有PCI总线设备或连接到该总线上的所有设备的工具。

2.2 环境检查

在开展实践工作前,首先需要做的是熟悉环境。当我们需要了解我们的工作电脑当前的设备信息是如何分布的。比如说磁盘控制器、声卡、网卡等等。有时候我们需要知道设备的硬件ID或者设备的型号,这时候就可以借助lspci命令来查询。

首先,执行命令查看当前的操作系统。当前所有操作都是在Linux上执行,如果有差错或者版本不一致,请酌情参考。

[xxx@xxx ~]$ uname -a
Linux xxx 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

[xxx@xxx ~]$ cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

其次,我们需要检查下我们的机器是否有这个命令。

[xxx@xxx ~]$ lspci V

这里让你失望了,请参考下3

3 如何查看帮助命令

在Linux环境中,有很多约定俗成的命令,可以帮助我们很快的投入到工作中,例如–help / ?/ -h / -V / --version 等等等。不过这个lspci的命令比较特殊一些,可以使用lspci V,如果使用使用其他命令也没有错误,只是会提示你不可用。

[root@xxx ~]$ lspci V
Usage: lspci [<switches>]

Basic display modes:
-mm             Produce machine-readable output (single -m for an obsolete format)
-t              Show bus tree

Display options:
-v              Be verbose (-vv for very verbose)
-k              Show kernel drivers handling each device
-x              Show hex-dump of the standard part of the config space
-xxx            Show hex-dump of the whole config space (dangerous; root only)
-xxxx           Show hex-dump of the 4096-byte extended config space (root only)
-b              Bus-centric view (addresses and IRQ's as seen by the bus)
-D              Always show domain numbers

Resolving of device ID's to names:
-n              Show numeric ID's
-nn             Show both textual and numeric ID's (names & numbers)
-q              Query the PCI ID database for unknown ID's via DNS
-qq             As above, but re-query locally cached entries
-Q              Query the PCI ID database for all ID's via DNS

Selection of devices:
-s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]   Show only devices in selected slots
-d [<vendor>]:[<device>][:<class>]              Show only devices with specified ID's

Other options:
-i <file>       Use specified ID database instead of /usr/share/hwdata/pci.ids
-p <file>       Look up kernel modules in a given file instead of default modules.pcimap
-M              Enable `bus mapping' mode (dangerous; root only)

PCI access options:
-A <method>     Use the specified PCI access method (see `-A help' for a list)
-O <par>=<val>  Set PCI access parameter (see `-O help' for a list)
-G              Enable PCI access debugging
-H <mode>       Use direct hardware access (<mode> = 1 or 2)
-F <file>       Read PCI configuration dump from a given file

当我们阅读了很多的帮助文档后,就可以开始动手实践一下啦。
备注:当前执行命令是CentOS 7.6 开源版本。

4 实践先行

4.1 显示所有设备详细信息

lspci -v

[xxx@xxx ~]$ lspci -v
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
        Subsystem: VMware Virtual Machine Chipset
        Flags: bus master, medium devsel, latency 0
        Kernel driver in use: agpgart-intel
        ……此处省略其他设备信息

4.2显示所有设备更多详细信息

lspci -vv

[xxx@xxx ~]$ lspci -vv
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
        Subsystem: VMware Virtual Machine Chipset
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Kernel driver in use: agpgart-intel
        ……此处省略其他设备信息

4.3显示所有设备更多更详细信息

这个命令基本上是ALL IN

lspci -vvv
[xxx@xxx ~]$ lspci -vvv
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
        Subsystem: VMware Virtual Machine Chipset
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Kernel driver in use: agpgart-intel
        ……此处省略其他设备信息

4.4显示设备的vendor id 和device id

lspci -n
[xxx@xxx ~]$ lspci -n
00:00.0 0600: 8086:7190 (rev 01)
00:01.0 0604: 8086:7191 (rev 01)
00:07.0 0601: 8086:7110 (rev 08)
00:07.1 0101: 8086:7111 (rev 01)
00:07.3 0680: 8086:7113 (rev 08)
00:07.7 0880: 15ad:0740 (rev 10)

……此处省略其他设备

4.5显示设备配置空间的标准部分

lspci -x

4.6 显示设备上pcie设备的配置空间的所有内容

lspci -xxx

4.7 显示 PCI-X 2.0 和 PCI Express 总线上可用的扩展(4096 字节)PCI 配置空间内容

lspci -xxxx

4.8 显示说有pcie设备的总线地址

lspci -b

4.9 以树形结构显示pcie设备

能展示设备上所以pcie总线、桥、pcie设备之间的连接关系

lspci -t

5 附录

5.1 查阅pci.ids

可以通过查阅/usr/share/hwdata/pci.ids来查看所有的内容信息。
/proc/bus/pci:linux 2.1.82 之后版本核心提供的 PCI 总线配置空间的接口。包含每个总线 (per-bus) 的子目录以及每个设备卡 (per-card) 的配置空间档案,还有一个 devices 档案,包含所有PCI设备的列表。

6 问答

作为一名运维工程师需要了解掌握很多技能,比如说操作系统、开源组件、监控相关、编程知识、网络知识、数据库知识、自动化技能和日志分析能力。当然也不能缺少一些软技能,例如沟通、抗压等,要和同事、领导以及客户保持良好的沟通,理解需求,提供有效的解决方案,需要应对高强度的工作压力,保持冷静,快速解决问题。


欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

六月暴雪飞梨花

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

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

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

打赏作者

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

抵扣说明:

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

余额充值