查找哪个程序访问了内核模块

查找哪个程序访问了内核模块

如何访问访问某个模块的用户/程序列表?

我跑:

lsmod | grep ^uvcvideo

当没有应用程序使用我的摄像机时,这会返回此行:

uvcvideo               86016  0

好吧,我正在运行一些东西,当行尾的“0”变成除 0 以外的任何值(实际上通常是 1)时,它会向我发送一条通知,表明我的相机正在使用中。

我想知道是否有将 0 变为 1 的程序日志,或者何时/如何访问哪些模块。

答案1

通常,没有这方面的日志文件。不过,您可以使用一些工具来制作它!

内核有一个针对 try_module_get() 函数的内置跟踪点。这是增加模块引用计数的函数。该跟踪点位于module子系统中,称为module_get

https://stackoverflow.com/questions/448999/is-there-a-way-to-figure-out-what-is-using-a-linux-kernel-module/449856(长读)。

为了帮助您入门,您可以尝试一下perf trace -a --no-syscalls -e module:module_get -e module:module_put。这显示了程序名称,但它不显示PID

相关内容