/sys是sysfs文件系统的挂载点,用于向用户空间结构化展示内核设备、驱动等层次信息,支持查看设备拓扑、读写硬件属性、配合udev实现热插拔,其内容位于内存不占磁盘空间。
Linux系统中的/sys目录是sysfs文件系统的挂载点,主要用于向用户空间导出内核中设备、驱动和子系统的层次化信息。它不是普通的存储目录,而是一个虚拟文件系统,内容存在于内存中,不占用磁盘空间。
sysfs的作用与功能
/sys提供了一种结构化的方式查看和操作内核对象(kobject),包括设备、驱动、类、总线等。其主要作用包括:
- 展示设备拓扑结构,例如哪些设备连接在USB总线上
- 暴露设备属性,可通过读写文件来获取或修改硬件参数
- 支持热插拔机制,配合udev动态创建设备节点
- 为用户空间工具(如lspci、lsusb)提供底层数据来源
常见子目录说明
/sys下的各个子目录对应不同的内核组件:
- /sys/devices:系统中所有设备的层级视图,按物理或逻辑连接组织
- /sys/bus:注册的总线类型(如pci、usb),列出各总线上的设备和驱动
- /sys/class:按功能分类的设备,如/sys/class/net包含所有网络接口
- /sys/block:系统中所有块设备(如sda、nvme0n1)的信息
- /sys/firmware:与固件相关的接口,如ACPI信息
实际应用场景举例
通过/sys可以完成一些系统管理任务:
- 查看某网卡是否开启TSO:cat /sys/class/net/eth0/flags
- 控制LED灯状态:echo 1 > /sys/class/leds/sdb::indicator/brightness
- 获取CPU频率信息:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
这些操作本质上是与内核交互,需注意权限和稳定性,错误写入可能导致设备异常。
与proc和dev的区别
/sys与/proc、/dev协同工作但职责不同:
- /proc侧重进程和系统运行时状态(如内存、CPU使用)
- /dev提供设备节点供程序进行I/O操作
- /sys专注设备模型和驱动信息,强调结构化和可配置性
三者结合构成了Linux用户空间与内核设备管理的主要接口体系。
基本上就这些。理解/sys有助于深入掌握Linux设备管理和内核交互机制,尤其在嵌入式开发和系统调试中非常实用。