在 Linux 中,/sys/ 目录是 Linux 内核的 sysfs 文件系统的挂载点,用于呈现内核与设备驱动程序、硬件设备、内核模块之间的接口信息。该目录提供了一种统一的方式,让用户和系统管理员能够直接与系统硬件和内核交互。它是内核空间与用户空间之间的桥梁。
/sys/ 目录中的主要子目录及其作用:
1. /sys/class/
- 功能:此目录将设备按照类别(class)分类,比如网络接口、块设备、TTY 设备等。例如,网络接口可以在
/sys/class/net/中找到,块设备(如硬盘)可以在/sys/class/block/中找到。 - 用途:便于查找与操作系统特定类型的设备。
2. /sys/devices/
- 功能:此目录展示了系统的物理设备层次结构。每个硬件设备都有一个子目录,包含该设备的状态和配置选项。包括 CPU、内存、PCI 设备、USB 设备等。
- 用途:用于查看和管理物理设备的属性。
3. /sys/block/
- 功能:该目录包含系统中的所有块设备(如硬盘和闪存驱动器)的信息。每个设备都有自己的子目录,存储了设备的状态、大小、分区等信息。
- 用途:便于用户查询和管理块设备相关的详细信息。
4. /sys/bus/
- 功能:列出了系统中使用的硬件总线类型,比如 PCI、USB、I2C 等。每个总线都有其设备的相关信息。
- 用途:用户可以通过此目录管理特定总线上的设备和驱动程序。
5. /sys/kernel/
- 功能:此目录包含了内核的一些关键参数和调试信息,例如内核配置、内核模块、调试跟踪信息等。
- 用途:用于查看和调试内核的内部运行状态。
6. /sys/firmware/
- 功能:提供了与系统固件相关的信息,包括 ACPI(高级配置与电源接口)和 EFI(可扩展固件接口)。
- 用途:主要用于与系统固件(如 ACPI 电源管理或 EFI 引导选项)进行交互。
7. /sys/module/
- 功能:列出了当前系统中加载的内核模块,每个模块都有一个子目录,展示了该模块的参数和状态。
- 用途:用户可以查看内核模块的状态,或动态调整模块参数。
8. /sys/fs/
- 功能:该目录展示了与文件系统相关的虚拟文件系统,如 Cgroup(控制组)和 FUSE(文件系统用户空间接口)。
- 用途:查看与管理系统文件系统层面的相关配置和状态。
9. /sys/power/
- 功能:此目录主要用于电源管理,包括挂起、休眠等选项。
- 用途:与系统的电源管理策略和状态交互。
使用场景
- 查询设备信息:通过
/sys目录,用户可以直接查询系统设备的详细信息。例如,网络接口的 MAC 地址、硬盘的扇区大小、CPU 的频率等。 - 实时交互:用户可以通过修改
/sys中的某些文件,动态改变设备行为。例如,可以通过/sys/class/backlight/来调整屏幕亮度。 - 调试和性能优化:开发者或系统管理员可以通过
/sys目录中的数据来调试系统性能问题,例如通过/sys/devices/system/cpu/cpu*/cpufreq/来监控和调整 CPU 频率。
总之,/sys/ 目录为用户提供了一个灵活、直接与硬件和内核交互的方式,有助于管理系统的底层设备和优化系统性能。