如何找出 Linux 中 insmod 中使用了哪些文件?

如何找出 Linux 中 insmod 中使用了哪些文件?

我正在编写一个脚本,该脚本可以在各种类型的 CentOS/Redhat 服务器上运行,它需要找出哪些文件已加载到内核中。运行 lsmod 会为我提供模块的名称(可以在调用 insmod 时使用 -o 设置),但不会提供已加载的文件。

有没有办法找出哪些文件作为模块加载到内核中?最好能够与 lsmod 中显示的名称进行交叉引用?

谢谢!

答案1

据我所知,这些信息没有记录在任何地方。即使记录了,如果文件在此期间被移动或删除,这些信息可能就不准确了(这可以解释为什么没有人实现这样的功能)。

给定一个模块名称foo,显示如果请求modprobe -l foo该模块,现在将加载哪个文件。但如果使用 来加载模块,则不会记录默认模块名称,而只会记录。foomodprobe -o barbar

答案2

我玩了一下,发现了以下命令。

$ lsmod | cut -d " " -f 1

将输出已加载模块的列表。

$ modinfo modulename -n

将输出模块的文件名。

$ list=`lsmod | cut -d " " -f 1`; echo "$list" | while read line; do echo $line; echo -e `modinfo $line -n`\\n; done;

将输出内核模块列表及其文件路径。

答案3

cat /proc/modules

为您提供已加载模块的列表(详细)(RedHat,Ubuntu,我猜它适用于Redhat所基于的CentOS)。

答案4

猫/ proc /模块
更多 /proc/模块

图像 sudo rmmod 打印

相关内容