删除顽固的模块

pbo*_*oin 6 linux package-management kernel

我正在尝试以编程方式踩踏 RHEL5 上的蓝牙。

我已经停止了服务——没问题。rpm -e相关的蓝牙包 bluez-*也没有问题。

ps -aef | grep -v grep | egrep -c '(sdpd|hcid)'
Run Code Online (Sandbox Code Playgroud)

返回零,所以我知道守护进程已经消失了。

出于某种原因,我无法卸载模块。 modprobe -rv一直说它们在使用中。

依赖项如下所示:

bluetooth -> bnep
          -> l2cap 
                 -> rfcomm
                 -> hidp
          -> rfcomm
          -> hidp
Run Code Online (Sandbox Code Playgroud)

但是,即使从顶部开始以便依赖项很简单,也会modprobe -rv bluetooth返回FATAL: Module bluetooth is in use

那么,我如何找出正在使用这个模块的进程?它似乎不在 /proc/modules 或 lsof 中。

命令lsof仍然显示出一些钩子。

# lsmod | egrep '(bnep|hidp|rfcomm|l2cap|bluetooth)'
bnep                   82241  0 
hidp                   83521  0 
rfcomm                104809  0 
l2cap                  89281  5 bnep,hidp,rfcomm
bluetooth             118597  4 bnep,hidp,rfcomm,l2cap
Run Code Online (Sandbox Code Playgroud)

Ave*_*yne 4

当您执行操作时lsmod,蓝牙模块的引用计数是多少?还,

lsmod | grep "bluetooth"
Run Code Online (Sandbox Code Playgroud)

只是为了确保没有可能遗漏的其他依赖项。


按以下顺序弹出模块:

rmmod bnep
rmmod hidp
rmmod rfcomm
rmmod l2cap
Run Code Online (Sandbox Code Playgroud)

然后尝试

rmmod bluetooth
lsmod
Run Code Online (Sandbox Code Playgroud)