【问题标题】:How to find the list of processes using a particular kernel module?如何使用特定内核模块查找进程列表?
【发布时间】:2012-02-20 05:16:30
【问题描述】:

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

【问题讨论】:

标签: linux driver kernel-module


【解决方案1】:

lsof /dev/ 可能会帮助您找到依赖的进程。

【讨论】:

  • 这对我有用。 lsof /dev/nvidia,例如。我可以看到进程并杀死它们,然后rmmod nvidia.
【解决方案2】:

This was asked before,但是没有很好的答案,可能是因为没有很好的方法来完成找到什么正在使用什么。

最好的建议是dmesg 并查找加载模块的任何迹象。

您也可以尝试将--force 参数用于rmmod,以防您的内核在构建时支持它。

【讨论】:

  • 请注意,使用rmmod --force 可能会使系统处于未定义状态,尤其是在实际使用该模块时。我不建议使用它,除非作为最后的手段。
  • 除了dmesganswer 中提到的问题的lsof(“列出打开的文件”)命令在某些情况下仍然有用。特别是在处理文件系统模块和创建字符设备的模块等时。它可能有助于找出哪个进程打开了模块服务的文件并保持打开状态。
猜你喜欢
  • 1970-01-01
  • 2015-04-29
  • 2010-12-22
  • 2016-07-17
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
相关资源
最近更新 更多