【发布时间】:2012-02-20 05:16:30
【问题描述】:
当我尝试对模块进行 rmmod 时,我收到错误消息“错误:模块正在使用”,lsmod | grep <module name> 显示计数。
有没有办法告诉我哪些进程正在使用这个特定的内核模块/驱动程序?
【问题讨论】:
标签: linux driver kernel-module
当我尝试对模块进行 rmmod 时,我收到错误消息“错误:模块正在使用”,lsmod | grep <module name> 显示计数。
有没有办法告诉我哪些进程正在使用这个特定的内核模块/驱动程序?
【问题讨论】:
标签: linux driver kernel-module
lsof /dev/ 可能会帮助您找到依赖的进程。
【讨论】:
lsof /dev/nvidia,例如。我可以看到进程并杀死它们,然后rmmod nvidia.
This was asked before,但是没有很好的答案,可能是因为没有很好的方法来完成找到什么正在使用什么。
最好的建议是dmesg 并查找加载模块的任何迹象。
您也可以尝试将--force 参数用于rmmod,以防您的内核在构建时支持它。
【讨论】:
rmmod --force 可能会使系统处于未定义状态,尤其是在实际使用该模块时。我不建议使用它,除非作为最后的手段。
dmesg,answer 中提到的问题的lsof(“列出打开的文件”)命令在某些情况下仍然有用。特别是在处理文件系统模块和创建字符设备的模块等时。它可能有助于找出哪个进程打开了模块服务的文件并保持打开状态。