如何使用特定内核模块查找进程列表?

Raj*_*Raj 15 linux driver kernel-module

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

小智 9

lsof /dev/ 可能会帮助您找到相关进程。


wal*_*lyk 8

之前有人问过,但没有很好的答案,可能是因为没有好的方法可以找到使用什么的东西.

最好的建议是dmesg查找加载模块的内容的任何指示.

您也可以尝试使用该--force参数rmmod,以防内核构建时支持它.

  • 除了`dmesg`之外,[回答](http://stackoverflow.com/a/449179/689077)中提到的`lsof`("list open files")命令对于上述问题在某些情况下仍然有用.特别是在处理已创建字符设备等的文件系统模块和模块时.可能有助于找出哪个进程已打开模块所服务的文件并使其保持打开状态. (3认同)
  • 请注意,使用`rmmod --force`可能会使系统处于未定义状态,尤其是在实际使用模块的情况下.我不建议使用它,除非作为最后的手段. (2认同)