当我尝试使用rmmod卸载模块时,我收到错误消息“Error: Module in use”,lsmod | grep <module name>
显示计数。
有没有办法告诉我哪些进程正在使用这个特定的内核模块/驱动程序?
当我尝试使用rmmod卸载模块时,我收到错误消息“Error: Module in use”,lsmod | grep <module name>
显示计数。
有没有办法告诉我哪些进程正在使用这个特定的内核模块/驱动程序?
使用 lsof /dev/ 命令可能有助于找到相关进程。
lsof /dev/nvidia
。我可以看到进程并杀死它们,然后rmmod nvidia
。 - crimson-egret这个问题之前已经被问过了,但是没有很好的答案,可能是因为没有很好的方法来找出正在使用什么。
最好的建议是使用dmesg
并查找任何加载模块的指示。
您还可以尝试使用--force
参数来rmmod
,以防您的内核支持它。
rmmod --force
可能会使系统处于未定义状态,特别是如果模块实际上正在使用中。除非万不得已,否则我不建议使用它。请谨慎使用。 - Eugenedmesg
之外,在提到的问题的答案中提到的lsof
(“列出打开的文件”)命令在某些情况下仍然可能有所帮助,特别是在处理文件系统模块和创建字符设备等模块时。它可以帮助查找哪个进程打开了模块提供的文件并保持它们处于打开状态。 - Eugene