源码技术
php
java
python
Linux
当前位置:
首页
>
Linux
>Linux 必学目录:/sys 入门看这篇就够了
Linux 必学目录:/sys 入门看这篇就够了
2026-08-24 00:13:32
Linux 必学目录:/sys 入门看这篇就够了
大家好!我是大虫子🐛!
这篇文章介绍下 Linux 中 /sys 目录,小编觉得这个目录很重要,对于搞系统安全开发或者驱动开发的小伙伴有很大帮助,从这个目录下的文件中可以提取很多有用信息~
所以了解 /sys 目录对于 Linux 系统开发至关重要,因为它提供了与内核交互的接口,支持设备管理、调试和动态响应等关键功能。
在 Linux 系统中,/sys 目录是一个重要的虚拟文件系统,它提供了一个接口,用于与内核进行交互,并让用户空间(user space)程序能够访问和修改内核内部状态。
/sys 目录是 sysfs 文件系统的挂载点,下面对 /sys 目录的详细讲解。
📁
/sys/devices
/sys/devices 目录是 Linux 系统中的一个虚拟文件系统的一部分,主要用于提供有关系统中物理设备的信息。它是 sysfs 文件系统的核心组成部分,允许用户空间程序以一种结构化的方式与内核中的设备和驱动程序进行交互。
1. 结构
/sys/devices 目录的结构非常复杂,通常包含多个子目录和文件,主要可以分为以下几类:
物理设备:每个物理设备(如硬盘、USB 设备、网络接口等)都有一个对应的目录,目录名称通常是设备的唯一标识符(如设备 ID)。
子设备:某些设备可能具有多个子设备,例如,一个 USB 控制器可能连接多个 USB 设备。
类别:设备可能会被分类到不同的类别中,如 class、bus、platform 等。
2. 关键文件与信息
在 /sys/devices 中,提供了有关设备的状态和属性的信息,包括但不限于:
uevent:每个设备都有一个 uevent 文件,用于描述设备事件。当设备的状态发生变化时,相关的信息会写入这个文件,以通知用户空间的程序。
driver:指向该设备驱动程序的链接,显示当前处理该设备的驱动程序。
modalias:用于描述设备的模块别名,帮助内核确定应加载哪个驱动程序。
power:与设备的电源管理相关的文件夹,提供有关设备电源状态的信息,如开启、关闭、休眠等模式。
3. 设备类别
在 /sys/devices 下,设备可以按照不同的类别进行组织,常见的包括:
/sys/devices/pci0000:00/:表示 PCI 设备的层次结构,每个设备都有其特定的路径。
/sys/devices/platform/:表示平台设备,通常是集成在主板上的设备,如 GPIO 控制器。
/sys/devices/usb/...:专门用于 USB 设备的目录,显示所有连接的 USB 设备。
4. 与用户空间的交互
动态性:/sys/devices 是动态更新的,设备的添加和删除会自动反映在该目录中。例如,当插入 USB 设备时,相应的目录会被创建,而当设备被移除时,该目录会被删除。
交互:用户可以通过读取和写入 /sys/devices 中的文件来获取设备状态或配置设备属性。例如,可以通过修改 power 目录中的文件来控制设备的电源管理行为。
📁/sys/dev
/sys/dev 目录是 Linux 系统中 sysfs 文件系统的一部分,主要用于提供与设备相关的信息和接口。虽然在许多现代 Linux 系统中,设备信息通常位于 /sys/devices 中,但 /sys/dev 目录仍然存在并被用作一些特定设备的接口。
1. 设备分类/sys/dev
目录下的内容通常与设备的类型或类别相关,可能包含多个子目录,每个子目录对应一种设备类型。
这些子目录中的文件和子目录提供了关于设备状态、驱动程序、模块和配置参数的信息。
2. 关键文件和信息
在 /sys/dev 目录下,有以下几类重要文件和信息:
uevent:每个设备都有一个 uevent 文件,用于描述设备事件。当设备状态发生变化时,相关的信息会写入这个文件,以通知用户空间的程序。
driver:指向处理该设备的驱动程序的链接。通过这个文件,可以知道哪个驱动正在管理特定设备。
power:与电源管理相关的文件夹,提供有关设备电源状态的信息,允许用户控制设备的电源模式(如开启、关闭、休眠等)。
modalias:描述设备的模块别名,帮助内核确定应加载哪个驱动程序。
3. 与设备的交互
动态性:/sys/dev 是动态更新的,设备的添加和删除会自动反映在该目录中。例如,当插入 USB 设备时,相应的目录会被创建,而当设备被移除时,该目录会被删除。
交互:可以通过读取和写入 /sys/dev 中的文件来获取设备状态或配置设备属性。例如,可以通过修改 power 目录中的文件来控制设备的电源管理行为。
4. 应用场景
调试:开发者可以查看 /sys/dev 中的设备信息,以帮助调试硬件问题或驱动程序问题。
设备管理:系统管理员可以使用 /sys/dev 提供的信息来进行设备监控和管理,例如检查设备是否正常工作或修改设备设置。
编写脚本:开发人员可以编写脚本,通过解析 /sys/dev 中的信息来自动化设备管理任务。
📁
/sys/class
该目录下包含所有注册在kernel里面的设备类型,这是按照设备功能分类的设备模型,每个设备类型表达具有一种功能的设备。每个设备类型子目录下都是这种哦哦那个设备类型的各种具体设备的符号链接,这些链接指向/sys/devices/name下的具体设备。设备类型和设备并没有一一对应的关系,一个物理设备可能具备多种设备类型;一个设备类型只表达具有一种功能的设备,比如:系统所有输入设备都会出现在/sys/class/input之下,而不论它们是以何种总线连接到系统的。(/sys/class也是构成linux统一设备模型的一部分)
📁/sys/block
该目录下的所有子目录代表着系统中当前被发现的所有块设备。按照功能来说防止在/sys/class下会更合适,但由于历史遗留因素而一直存在于/sys/block,但从linux2.6.22内核开始这部分就已经标记为过去时,只有打开了CONFIG_SYSFS_DEPRECATED配置编译才会有这个目录存在,并且其中的内容在从linux2.6.26版本开始已经正式移到了/sys/class/block,旧的接口/sys/block为了向后兼容而保留存在,但其中的内容已经变为了指向它们在/sys/devices/中真实设备的符号链接文件。
📁
/sys/bus
该目录下的每个子目录都是kernel支持并且已经注册了的总线类型。这是内核设备按照总线类型分层放置的目录结构,/sys/devices中的所有设备都是连接于某种总线之下的,bus子目录下的每种具体总线之下可以找到每个具体设备的符号链接,一般来说每个子目录(总线类型)下包含两个子目录,一个是devices,另一个是drivers;其中devices下是这个总线类型下的所有设备,这些设备都是符号链接,它们分别指向真正的设备(/sys/devices/name/下);而drivers下是所有注册在这个总线上的驱动,每个driver子目录下 是一些可以观察和修改的driver参数。
📁
/sys/fs
按照设计,该目录使用来描述系统中所有的文件系统,包括文件系统本身和按照文件系统分类存放的已挂载点。
📁
/sys/kernel
这个目录下存放的是内核中所有可调整的参数
📁
/sys/firmware
该目录下包含对固件对象(firmware object)和属性进行操作和观察的接口,即这里是系统加载固件机制的对用户空间的接口.(关于固件有专用于固件加载的一套API)
📁
/sys/hypervisor
该目录是与虚拟化Xen相关的装置。(Xen是一个开放源代码的虚拟机监视器)
📁
/sys/module
该目录下有系统中所有的模块信息,不论这些模块是以内联(inlined)方式编译到内核映像文件中还是编译为外模块(.ko文件),都可能出现在/sys/module中。即module目录下包含了所有的被载入kernel的模块。
📁
/sys/power
该目录是系统中的电源选项,对正在使用的power子系统的描述。这个目录下有几个属性文件可以用于控制整个机器的电源状态,如可以向其中写入控制命令让机器关机/重启等等。
各位小伙伴抱歉啊,/sys下所有目录都详细介绍完,会导致内容篇幅太长,所以只详细介绍了下
/sys/devices 、
/sys/dev。如果想继续了解的小伙伴,小编就把剩下的几个目录放在后面介绍~谢谢理解哈~
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:596563534@qq.com 。
Linux服务器最强运维管理面板?1Panel安装教程
Linux用户程序使用内核加密服务的方法
最新文章
Linux服务器最强运维管理面板?1Panel安装教程
从零开始学python-字典
2026年Python技术应用工程师报考指南新鲜出炉,一起看看吧!
不会还有人不知道吧!Python Excel 绝配
0 元学完|生信从 Linux 到高分论文,全程手把手带飞
程序员必知43个Linux命令,实用干货收藏
2026_2_4 寒假大计:从编程诱惑到“洗脚水战争”
关于参加Python人工智能与机器学习开发实战培训通知
细胞能重编程吗?从神秘母细胞到生命重塑者
不会写代码?Agent Skills让你1句话调教AI,那些收费工具直接歇菜!
热门文章
链游爆款炼成记:从代码到玩家狂欢,我们与头部客户如何用技术重构游戏世界?
47个Linux快捷键,让你的工作事半功倍!
别再被 Linux 网络配置搞懵!NetworkManager、systemd-networkd、Netplan 一篇吃透
校招中的“熟悉Linux操作系统”到底要熟悉到什么程度?!
细胞能重编程吗?从神秘母细胞到生命重塑者
AI实战变现 + 零代码产品落地,两天解锁职场跃迁密码
Claude-Mem:为AI编程助手注入持久记忆
泾县娃燃爆科创赛场!寒假学机器人编程、无人机,抢学习机等大礼
OpenClaw在Linux平台安装教程
Ai技术突飞猛进,还值得学习编程,做程序员吗?
随机文章
10个月宝宝每天需要喝多少奶粉?
泾县娃燃爆科创赛场!寒假学机器人编程、无人机,抢学习机等大礼
两组数据对比:VBA代码
节目预告 | 刘洪涛:代码赋能 审计“汇”轻松
涨知识!PLC模块、结构化编程到底强在哪里?
神器!!我愿称这个编程软件为年度最伟大发明!
黄岩区北城街道招聘数控/编程/车床/加工中心岗位
黄岩区北城街道招聘数控/编程/车床/加工中心岗位
Python自动化办公,5行代码搞定excel合并!!
高危预警 | OpenCode 远程代码执行漏洞 (CVE-2026-22812) 复现与防御
Ai技术突飞猛进,还值得学习编程,做程序员吗?