/sys目录是linux内核通过sysfs导出设备模型的核心接口,按/class、/bus、/block、/devices等子目录结构化呈现硬件信息,支持实时、免解析的文本读取。

/sys 目录是 Linux 内核通过 sysfs 文件系统导出设备模型的核心接口,它不是普通存储目录,而是实时反映内核中总线、设备、驱动和类之间关系的结构化视图。直接读取其中的文件即可获取准确、动态的硬件信息,无需解析二进制或依赖外部工具。
/sys/class:按功能分类查设备最直观
这个目录面向用户设计,把设备按用途归类,路径清晰、命名友好,适合快速定位常见硬件。
-
网络设备:查看
/sys/class/net/,每个子目录对应一个网卡(如eth0、wlan0),operstate显示连接状态,address是 MAC 地址 -
输入设备:进入
/sys/class/input/,每个inputX对应键盘、鼠标或触摸屏,name文件直接写出设备型号(如 “Logitech USB Keyboard”) -
背光与 LED:
/sys/class/backlight/下有显示器亮度控制节点;/sys/class/leds/列出所有可编程指示灯(如硬盘活动灯、电源灯) -
串口与图形:
/sys/class/tty/包含所有串行端口(ttyS0、ttyUSB0);/sys/class/graphics/中的fb0表示帧缓冲设备
/sys/bus:按总线类型查连接拓扑
这里揭示设备物理或逻辑上的挂载路径,对排查识别异常、理解驱动绑定关系特别有用。
-
PCI/PCIe 设备:
/sys/bus/pci/devices/下以0000:00:1f.2这类地址命名,每个目录含vendor(厂商 ID)、device(设备 ID)、class(设备类别码)等关键标识 -
USB 设备:
/sys/bus/usb/devices/按 USB 层级组织(如1-1.2表示第 1 总线下第 1 个 HUB 的第 2 个端口),product和manufacturer文件直接显示设备名称和厂商 -
平台设备:
/sys/bus/platform/devices/包含 SoC 集成模块(如 RTC、看门狗、GPIO 控制器),常见于嵌入式或笔记本内部组件
/sys/block 和 /sys/devices:查块设备与底层路径
这两个视图互补:前者按设备名聚合,后者按物理层级展开。
-
/sys/block/下列出所有块设备(sda、nvme0n1、loop0),其子目录含size(扇区数)、ro(是否只读)、queue/logical_block_size(逻辑块大小)等实用参数 -
/sys/devices/是完整设备树根目录,PCI 设备路径形如/sys/devices/pci0000:00/0000:00:1f.2/,USB 设备路径类似/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/,可追溯到主板插槽或 USB 端口 - 注意:多数
/sys/block/sdX实际是/sys/devices/...下对应设备的符号链接,两者内容一致但视角不同
读取技巧与注意事项
所有文件都是纯文本,用 cat 即可查看,但需注意权限和语义。
- 只读文件(如
vendor、name、size)提供信息,写入无效;部分文件(如enable、remove)可写,但修改可能影响设备运行,非必要不操作 - 十六进制值(如 vendor ID
0x8086)可用printf "%d\n" 0x8086转为十进制,或查 PCI ID 数据库确认厂商 - 设备热插拔后,
/sys内容会自动更新,无需重启或刷新命令 - 若某设备在
/sys/class中找不到,可先查/sys/bus/xxx/devices/,再用ls -l driver确认是否已绑定驱动











