如何在 Linux 中使用 lsmod(附实例)如何在 Linux 中使用 lsmod(附实例)如何在 Linux 中使用 lsmod(附实例)如何在 Linux 中使用 lsmod(附实例)
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中使用 lsmod(附实例)

Linux 内核对大多数人来说是个谜,但事实并非如此!欢迎来到 lsmod 的精彩世界,这是一个可以让您查看内核正在使用哪些模块等的工具!

什么是 lsmod?

要解释 lsmod 这个允许在 Linux 内核中列出模块的工具,首先必须了解什么是模块。 Linux 模块是一段模块化代码(以编译格式运行),可以随意从 Linux 内核加载或卸载。使用此类模块的主要优点是它们的模块化和粒度。

您可以将内核模块视为其他软件中的插件。每当您需要特定的——不太常见或不通用的——功能时,它将作为插件提供,或者在 Linux 内核的情况下作为模块提供。其他软件中的插件与 Linux 内核模块之间几乎没有区别。但是,它们运行的级别更接近于硬件和核心运行软件,而不是在用户级别的堆栈末端。

例如,您的显卡驱动程序——特别是如果您使用的是 NVidia 驱动程序——被加载为内核模块。安装驱动程序时,会配置并加载内核模块(可能在系统下次重新启动时)。

回到 lsmod,它应该包含在您的 Linux 操作系统的默认安装中,该工具将列出当前可用的内核模块的概述。

lsmod:第一眼

有趣的是,lsmod 是一种将(虚拟)/proc/modules 文件的内容呈现为更易于阅读的内容的工具。

/proc/modules 文件是一个 0 字节的虚拟文件,当使用例如 cat 或 vi 查看时,将包含(或更好的render) 当前可用于正在执行 lsmod 的系统上的 Linux 内核的模块列表。

让我们从检查 /proc/modules 文件的内容开始,看是否存在 AHCI(高级主机控制器接口)Linux 内核模块:

cat /proc/modules | grep ahci

这里我们使用cat来显示(render)/proc/modules的内容,然后使用grep AHCI 模块的 grep。请注意,我们没有为 grep 指定 -i 选项(这将执行不区分大小写的搜索),因为模块的完整列表 /proc/modules 只能是小写字母。

我们可以从提供的输出中看到当前可用的 AHCI Linux 内核模块。否则,输出看起来有点晦涩难懂。现在让我们试试 lsmod。

lsmod | grep -E '^Module|ahci'

在这里,我们使用了 lsmod,一个没有选项的工具,并使用 grep 来获取多个感兴趣的结果。 grep 的 -E 选项允许我们制作一个我们想要查看的项目的选择器/选择列表(字符串),所有项目都由一个或多个管道符号分隔(|) .

因此,我们在这里寻找任何 ahci 出现(在第二个选择器/选择字符串中),以及任何 ^Module 出现(在第一个选择器/选择字符串中),其中^ 是一个正则表达式(只适用于第一个选择器),选择一行的开头,表示我们只想看到开头的结果行 紧跟“模块”,这将是我们的第一个标题行。

我们现在看到输出被很好地渲染了;第一行(由于 ^Module 选择器,我们的 grep 命令包含了它),第二行和第三行列出了我们的 ahci 模块grep 由于第二个选择器而被选中。

标题列输出告诉我们每列包含什么;第一列是模块名称 (Module),第二列是字节大小 (Size),第三列提供了一个引用计数 ( Used by),或者换句话说,一个模块被内核引用了多少次(也许可以模糊地翻译成used)。

如果第三列中的引用计数为零,则意味着虽然该模块在“in”/内核中可用,但当前未被使用。

提示:如果您在 lsmod 的输出中看到 -2,您可能需要在 Stackexchange 的“使用者”列中查看 lsmod shows -2。

深入研究 modinfo

虽然 lsmod 工具本身没有选项,但我们可以将另一个实用程序与 lsmod 结合使用以发现更多信息:modinfo。

modinfo ahci -F 'description'
modinfo ahci -F 'author'

在这里,我们使用 modinfo 命令来查找有关 ahci Linux 内核模块的更多信息。特别是,我们使用 -F 选项到 modinfo 来选择我们想要了解其内容的特定字段。请注意,如果您不带任何选项执行 modinfo ahci,您将看到有关 ahci 内核模块的所有可用信息的完整列表。这是输出非常冗长,因为它包括签名密钥数据等。

我们也可以像之前那样使用 grep 在一个命令中选择两条信息。为此,我们使用 modinfo ahci | grep -E description|author,它呈现两行相同的输出,尽管它们直接位于彼此之下。

另请注意,可以再次使用正则表达式 仅选择从行首开始的输出字符串(对于正在搜索的两个字段),即 modinfo ahci | grep -E ^描述|^作者

与 lsmod 相比,modinfo 有一些您可能感兴趣的更多选项。查看 man modinfo 以查看所有可用选项。

包起来

在本文中,我们探讨了无选项的 lsmod 工具及其为我们提供的便利输出,向我们展示了哪些 Linux 内核模块可用以及每个此类内核模块当前被引用了多少次(< i>被内核“使用”)。我们还研究了如何在 Linux 中使用 modinfo 命令获取有关特定模块的更多信息。我们还研究了如何使用 grep -E 通过使用多个选择字符串进行扫描来同时获取两条信息。

如果您喜欢阅读本文,请查看我们的如何使用 ltrace 跟踪库调用和如何在 Linux 中使用共享对象(库)依赖项的文章。 尽情享受吧!

©2015-2025 艾丽卡 support@alaica.com