Answers:
还有无太大关系/proc/sys
和/sys
其他比一个事实,即两者都是内核接口和名称的巧合。
/proc/sys
是sysctl的接口,sysctl是内核配置参数。读取或修改/proc/sys/foo/bar
等同于获取或设置foo.bar
sysctl。Sysctl值是按语义类别组织的,它们与内核的结构没有内在的联系。许多sysctl值是每个Linux系统上都存在的设置,而与编译哪些驱动程序或功能无关。有些与可选功能(例如某些网络协议)有关,但与特定的硬件设备无关。
/sys/module
顾名思义,它是内核模块的接口。每个目录对应一个内核模块。您可以foo
通过写入来读取(有时修改)模块的参数/sys/module/foo/parameters/*
。
内核中加载的组件从内核命令行读取其参数。这些参数不能在运行时设置(至少不能通过自动生成的界面(如/sys/module
:组件可以为此公开一个自定义界面))进行设置。
Documentation/sysctl/*.txt
Linux内核文档中。这是一组参数,无论将哪些功能和驱动程序编译到特定内核中,该参数都几乎适用。
Patrick Mochel 的论文“ sysfs文件系统 ”将为您提供/sys
比此框更适合的用途和历史的概述。引用摘要:
sysfs是Linux 2.6内核的一项功能,它允许内核代码通过内存文件系统将信息导出到用户进程。文件系统目录层次结构的组织是严格的,并且基于内核数据结构的内部组织。在文件系统中创建的文件是(大多数)ASCII文件,每个文件通常具有一个值。这些功能确保导出的信息准确且易于访问,这使sysfs成为2.6内核最直观和有用的功能之一。
在回答您的特定问题“可加载内核模块是否在中得到表示/sys
吗?” 答案是“是的,如果模块的作者提供了界面”。这可以通过显示多少个已加载的模块在其中具有相应的条目来轻松演示。/sys/module
$ lsmod | awk '{print $1}' | sort > /tmp/lsmod
$ cd /sys/module ; ls > /tmp/sysmodule
$ comm -12 /tmp/lsmod /tmp/sysmodule
ahci
arc4
ath
ath9k
ath9k_common
ath9k_hw
bluetooth
bnep
cfg80211
…
这在我的系统上显示73个可加载模块中有73个在中有对应的条目/sys/module
。