/sys是linux内核导出硬件与设备状态的虚拟文件系统,实时反映内核对硬件的识别、配置和运行时状态,其路径严格依赖内核模块加载与硬件识别,如cpu温度需coretemp/k10temp模块加载后才存在/sys/class/hwmon/hwmon/temp_input等节点。

/sys 目录是 Linux 内核导出硬件与设备状态的虚拟文件系统,它不存储真实文件,而是实时反映内核对硬件的识别、配置和运行时状态。查看其中的“硬件内核参数”,关键在于明确目标:是查设备型号、电源管理策略、温度传感器读数,还是 PCIe 设备能力?不同路径对应不同语义,不能一概而论。
确认路径是否存在且可读
/sys 下的结构严格依赖内核模块是否加载、硬件是否被识别。例如:
-
CPU 温度:需 coretemp 或 k10temp 模块已加载,路径类似
/sys/class/hwmon/hwmon*/temp*_input;若无输出,说明驱动未就绪或设备不支持。 -
主板与 BIOS 信息:路径
/sys/class/dmi/id/下有product_name、bios_version等,但部分字段需 root 权限才能读取(如chassis_serial)。 -
GPU 显示节点:
/sys/class/drm/下列出所有渲染设备(如card0、renderD128),EDID 数据在/sys/class/drm/card0/eDP-1/edid(需存在且非空)。
用 cat 和 ls 快速读取常用硬件字段
多数只读参数可直接用 cat 查看,注意处理换行符和权限:
-
cat /sys/class/dmi/id/product_name→ 查主板型号 -
cat /sys/firmware/acpi/pm_profile→ 查当前电源配置文件(0=desktop, 3=laptop) -
ls /sys/bus/pci/devices/→ 列出所有 PCI 设备编号(如0000:00:1f.2),再进子目录查class、vendor、device - 脚本中安全读取:
cat /sys/class/dmi/id/bios_date 2>/dev/null | tr -d '\n',避免因权限或缺失导致中断
结合 udevadm 和 lspci 辅助定位
/sys 是底层视图,但路径抽象、嵌套深。实际排查时建议先用工具缩小范围:
-
lspci -mm显示设备厂商/型号,再根据 BDF(总线-设备-功能)去/sys/bus/pci/devices/下找对应目录 -
udevadm info -q property -n /dev/sda→ 查磁盘设备在 /sys 中的完整路径(如/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda) -
find /sys -name "uevent" -path "*/usb*"→ 快速定位 USB 子系统相关触发点
注意只读性与动态性
/sys 中绝大多数硬件相关节点是只读的,修改会报 Permission denied。少数可写项(如 /sys/bus/pci/devices/*/remove)具有强副作用,操作前必须确认用途。另外,某些值每次读取都可能变化(如温度、功耗计数器),不适合做静态判断依据。











