如何找到正在使用特定内核模块的进程列表?

29

当我尝试使用rmmod卸载模块时,我收到错误消息“Error: Module in use”,lsmod | grep <module name> 显示计数。
有没有办法告诉我哪些进程正在使用这个特定的内核模块/驱动程序?


可能是如何找出正在使用Linux内核模块的方法?的重复问题。 - J-16 SDiZ
2个回答

11

使用 lsof /dev/ 命令可能有助于找到相关进程。


这对我有用。例如,lsof /dev/nvidia。我可以看到进程并杀死它们,然后rmmod nvidia - crimson-egret

8

这个问题之前已经被问过了,但是没有很好的答案,可能是因为没有很好的方法来找出正在使用什么。

最好的建议是使用dmesg并查找任何加载模块的指示。

您还可以尝试使用--force参数来rmmod,以防您的内核支持它。


3
请注意,使用 rmmod --force 可能会使系统处于未定义状态,特别是如果模块实际上正在使用中。除非万不得已,否则我不建议使用它。请谨慎使用。 - Eugene
4
除了dmesg之外,在提到的问题的答案中提到的lsof(“列出打开的文件”)命令在某些情况下仍然可能有所帮助,特别是在处理文件系统模块和创建字符设备等模块时。它可以帮助查找哪个进程打开了模块提供的文件并保持它们处于打开状态。 - Eugene

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接