Linux命令-systool(sysfs 设备属性查看)
- 快速参考
- 安装与依赖
- 查看总线信息
- 查看设备信息
- 查看驱动信息
- 查看设备类
- 热插拔设备实战
- 与 /sys 文件系统直接交互
- 综合查询脚本
- 选项速查
systool是 sysfs 文件系统的用户态查询工具,可以显示和操作内核设备模型的层次结构信息,包括总线、设备、驱动和模块的属性。它与lspci -v或直接读取/sys/文件系统功能类似,但提供了更结构化的输出方式。
快速参考
systool[选项][设备路径]
systool属于sysfsutils包,直接与内核的 sysfs 虚拟文件系统交互,适合查看热插拔设备、PCI 总线、USB 设备等内核对象属性。
安装与依赖
# Debian/Ubuntusudoapt-getinstallsysfsutils# RHEL/CentOSsudoyuminstallsysfsutils# Fedorasudodnfinstallsysfsutils# 验证安装whichsystool systool--version2>&1||systool-V2>&1rpm-qa|grepsysfsutils# RPM 系检查dpkg-l|grepsysfsutils# Debian 系检查查看总线信息
# 列出所有总线类型systool-b# 查看特定总线的属性(如 PCI 总线)systool-bpci# 查看 USB 总线systool-busb# 查看 SCSI 总线systool-bscsi# 查看 I2C 总线(嵌入式设备常用)systool-bi2c# 查看 platform 总线systool-bplatform# 查看所有总线的完整详细信息forbusin$(systool-b|awk'NR>1{print $1}');doecho"=== Bus:$bus==="systool-b"$bus"2>/dev/nulldone查看设备信息
# 列出所有设备systool-d# 查看特定设备(通过路径)systool-d/devices/pci0000:00# 列出所有块设备systool-d-bblock# 查看 SCSI 设备systool-d-bscsi# 查看 USB 设备属性systool-d-busb# 查看网络设备信息systool-d-bnet# 通过类查看设备(如 input 类)systool-cinput查看驱动信息
# 列出所有已注册驱动systool-m# 查看特定驱动详情(如 e1000 网卡驱动)systool-me1000# 查看 ext4 文件系统驱动systool-mext4# 查看 i915 显卡驱动systool-mi915# 查看 usb_storage 驱动systool-musb_storage# 列出所有已加载模块的属性lsmod|awk'{print $1}'|whilereadmod;dosystool-m"$mod">/dev/null2>&1&&echo"$mod: 可查询"done查看设备类
# 列出所有设备类systool-c# 查看网络类systool-cnet# 查看 USB 类systool-cusb_host# 查看块设备类systool-cblock# 查看输入设备类systool-cinput# 查看 misc 类systool-cmisc热插拔设备实战
# 查看 PCI 设备完整属性systool-bpci-v# 查看特定 PCI 设备systool-bpci-d0000:00:1f.0# 查看 USB 设备树systool-busb-v|head-50# 查看当前挂载的文件系统设备systool-bblock-v# 查看 SCSI 磁盘属性systool-bscsi-v# 与 lspci 对比输出echo"=== systool PCI ==="systool-bpci2>&1|head-10echo"=== lspci -v ==="lspci-v2>&1|head-10与 /sys 文件系统直接交互
# systool 本质上是读取 /sys 目录# 直接读取 sysfs 的等效操作# 查看 CPU 信息cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq# 查看网卡速率cat/sys/class/net/eth0/speed# 查看 USB 设备制造商cat/sys/bus/usb/devices/1-1/manufacturer# 查看磁盘模型cat/sys/block/sda/device/model# 查看 PCI 设备供应商cat/sys/bus/pci/devices/0000:00:1f.0/vendor# 列出 sysfs 层次结构tree /sys/class/2>/dev/null||find/sys/class/-maxdepth2tree /sys/bus/2>/dev/null||find/sys/bus/-maxdepth2综合查询脚本
#!/bin/bash# sysfs 信息收集脚本# 用法: ./sysinfo.shecho"====================================="echo" 系统设备信息(via systool/sysfs)"echo"====================================="echo""echo"--- PCI 总线 ---"systool-bpci2>/dev/null||echo"systool 不可用,尝试 lspci"lspci2>/dev/nullecho""echo"--- USB 设备 ---"systool-busb2>/dev/null|head-20echo""echo"--- 块设备 ---"systool-bblock2>/dev/null||lsblkecho""echo"--- 网络设备 ---"systool-cnet2>/dev/null||iplinkshowecho""echo"--- CPU 信息 (sysfs) ---"forcpuin/sys/devices/system/cpu/cpu[0-9]*;doname=$(basename"$cpu")freq=$(cat"$cpu/cpufreq/scaling_cur_freq"2>/dev/null||echo"N/A")echo"$name:${freq:-未知频率}"doneecho""echo"--- 内存信息 (sysfs) ---"mem_total=$(cat/proc/meminfo|grepMemTotal)echo"$mem_total"echo""echo"--- 内核模块统计 ---"echo" 已加载模块数:$(lsmod|wc-l)"echo""选项速查
| 选项 | 说明 |
|---|---|
-b BUS | 查看指定总线(pci/usb/scsi/…) |
-c CLASS | 查看设备类(net/block/input/…) |
-d DEVICE | 查看指定设备 |
-m MODULE | 查看内核模块属性 |
-v | 详细输出 |
-p PATH | 指定 sysfs 挂载路径 |
-a | 显示所有属性 |
systool提供了一种比直接遍历/sys更结构化的方式查看内核设备模型。在现代 Linux 系统中,lspci、lsusb、lsblk等工具通常更易用,但systool在查看驱动和模块关联关系时有独特优势。