Linux-系统管理(1)----获取硬件信息

当系统启动时,Linux 内核会自动检测硬件设备并加载相应的驱动程序。但这些硬件检测信息在启动时很快就滚动消失,所以需要在进入系统后再次显示这类信息,以发现潜在的问题。

demsg

dmesg 命令可以列出系统启动时硬件检测和驱动加载的情况,以及后续由内核生成的其他信息。dmesg 命令的输出示例:
dmesg 输出示例(部分)
从输出信息中可以找到 Linux 内核版本、内核命令行选项以及连接到此计算机的硬件设备,如串口、鼠标接口、CD驱动器、网卡和并行端口等。

tips:

dmesg 命令的输出确实有点长,所以常通过管道符(|)将其导向 more 或 less 命令单页显示。或者输送给 head、tail、grep等文字处理工具。
如:
# dmesg | head -20 只输出前 20 行日志
# dmesg | tail -20 只输出最后 20 行日志
# dmesg | grep -i usb 只输出包含 “usb” 字符串的日志行(-i 选项表示忽略大小写)
常用作筛选的字符串包括 usb、dma、tty、memory、eth、sda等,也可以多个关键字相组合。
# dmesg | grep -E -i "eth|sda" 筛选包含字符串 “eth” 或 “sda” 的日志行dmesg grep

lspci

lspci 命令可以列出系统中的 PCI 总线及其连接的设备。该命令的输出如下:PCI 总线
输出信息中包括声音(Multimedia audio controller),USB设备(USB controller),视频输出(VGA compatible controller),有线网卡(Ethernet controller)和磁盘(SATA controller)等。
如需获取更详尽的信息,还可以在该命令后增加一至多个 -v 选项(如 -vvv)。

lsusb

如果只对USB设备感兴趣,可以通过 lsusb 命令来获知USB设备的情况(同样可以通过增加 -v 选项来获取更详细的输出)。USB 设备
以上面截图中第三行为例:

  • Bus 002 指明设备连接到哪条总线
  • Device 003 表明这是连接到某条总线的第三台设备
  • ID 指设备 id
  • Logitech, Inc. Unifying Receiver 表示生产商和设备名
tips

找出连接了多少 USB 设备:find /dev/bus
查找 USB 设备

列出某台 USB 设备的详细信息,如:lsusb -D /dev/bus/usb/001/002
以树层结构列出 USB 设备:lsusb -tusb 树层结构输出
其中 12M 和 480M 指 USB 类型的传输速率。

  • 12M 意味着 USB1.0/1.1 的速率是12Mbit/s
  • 480M 意味着 USB2.0 的速率是 480Mbit/s
  • 5.0G 意味着 USB3.0 的速率是 5.0 Gbit/s

lsblk

lsblk 命令用于列出所有可用块设备的信息,还能显示他们之间的依赖关系。块设备有硬盘,闪存盘,cd-ROM等等。
lsblk

  1. NAME :块设备名。
  2. MAJ:MIN :主要和次要设备号。
  3. RM :设备是否属于可移动设备。如 sdb 的 RM 值为1,是可移动设备。
  4. SIZE :设备的容量大小信息。
  5. RO :设备是否为只读。
  6. TYPE :设备是磁盘还是磁盘上的一个分区。在本例中,sda 和 sdb 是磁盘,而 sr0 是只读存储(rom)。
  7. MOUNTPOINT :设备的挂载点。

lscpu

lscpu 命令可以获得 CPU 的详细信息,如CPU架构(如 i686 或 x86_64)、运算模式(32bit 或 64bit)、核心数、每颗核心的线程数、型号、主频等。
CPU 信息

lsmod

如果你新增加了硬件,却不能被系统自动识别。可能你需要手动地加载对应的内核模块。内核模块安装在 /lib/modules/ 的子目录下,该子目录的名字对应内核的版本。即 /lib/modules/4.10.0-19-generic 目录下包含了 4.10.0-19-generic 内核的驱动程序。
lsmod 命令用于列出当前系统下已经载入的内核模块。lsmod 命令输出(部分)
获取已加载模块的信息,可以使用 modinfo 命令。modinfo
另外,还可以使用 modprobe 命令加载模块,rmmod 命令移除模块。

参考书目和文章:

Linux Bible,9th Edition
Linux lsblk 命令详解
Linux中显示系统中USB信息的lsusb命令