/sys/class 是 Linux 内核通过 sysfs 提供的按功能分类的设备视图,本质为指向 /sys/devices/ 的符号链接集合,支持直接读写以控制设备行为,并被 ip、lsblk、udev 等工具深度集成。

/sys/class 是 Linux 内核通过 sysfs 向用户空间暴露设备功能视图的核心目录。它不反映硬件物理连接方式,而是按“设备能做什么”来组织,比如所有网络接口归入 /sys/class/net,所有背光设备归入 /sys/class/backlight,所有输入设备归入 /sys/class/input。这种分类方式让使用者能快速定位所需功能的设备,无需关心它是接在 USB、PCI 还是 platform 总线上。
本质是符号链接集合,指向真实设备节点
/sys/class 下每个子目录(如 net、block、tty)里列出的,并不是独立设备实体,而是指向 /sys/devices/ 中对应物理设备的符号链接。例如:
- /sys/class/net/eth0 实际是 /sys/devices/platform/soc/1c30000.ethernet/net/eth0 的软链接
- /sys/class/backlight/intel_backlight 指向 /sys/devices/platform/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight
这意味着修改或读取 /sys/class 下的文件,最终操作的是底层设备的真实属性。一个物理设备可能出现在多个 class 目录中——比如一块带触摸屏的嵌入式板卡,其触控芯片既出现在 /sys/class/input/(作为输入设备),也可能出现在 /sys/class/i2c-dev/(作为 I²C 从设备)。
提供统一、可操作的功能接口
class 目录的设计目标是方便用户直接控制设备行为,多数文件支持读写。常见实用场景包括:
- 调节屏幕亮度:echo 500 > /sys/class/backlight/intel_backlight/brightness
- 启用/禁用网卡:echo 1 > /sys/class/net/eth0/device/online(若驱动支持)
- 查看电池状态:cat /sys/class/power_supply/BAT0/capacity
- 触发 LED 灯效:echo 255 > /sys/class/leds/myled/brightness
这些操作不需要加载额外工具,也不依赖 udev 规则,是内核原生支持的轻量级交互方式。
与系统管理工具深度协同
很多用户态工具正是基于 /sys/class 构建的:
- ip link 读取 /sys/class/net/ 下的状态判断接口是否存在、是否 up
- lsblk 实质是遍历 /sys/class/block/ 并解析各设备的 size、ro、rota 等属性
- udev 在设备热插拔时,依据 class 信息生成 /dev 下的设备节点(如 /dev/ttyUSB0 来自 /sys/class/tty/)
因此,/sys/class 不仅是信息展示层,更是用户空间设备管理逻辑的事实标准入口。











