我正在编写一个脚本,该脚本可以在各种类型的 CentOS/Redhat 服务器上运行,它需要找出哪些文件已加载到内核中。运行 lsmod 会为我提供模块的名称(可以在调用 insmod 时使用 -o 设置),但不会提供已加载的文件。
有没有办法找出哪些文件作为模块加载到内核中?最好能够与 lsmod 中显示的名称进行交叉引用?
谢谢!
答案1
据我所知,这些信息没有记录在任何地方。即使记录了,如果文件在此期间被移动或删除,这些信息可能就不准确了(这可以解释为什么没有人实现这样的功能)。
给定一个模块名称foo
,显示如果请求modprobe -l foo
该模块,现在将加载哪个文件。但如果使用 来加载模块,则不会记录默认模块名称,而只会记录。foo
modprobe -o bar
bar
答案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 打印