我正在尝试以编程方式控制 RHEL5 上的蓝牙。
我已停止服务 - 没问题。rpm -e
相关蓝牙软件包 bluez-* 也没有问题。
ps -aef | grep -v grep | egrep -c '(sdpd|hcid)'
返回零,所以我知道守护进程已经消失了。
由于某种原因,我无法卸载模块。 modprobe -rv
一直说它们正在使用中。
依赖关系如下:
bluetooth -> bnep
-> l2cap
-> rfcomm
-> hidp
-> rfcomm
-> hidp
但是,即使从顶部开始,依赖关系也很简单modprobe -rv bluetooth
,严重:模块蓝牙正在使用中。
那么,我如何找出哪些进程正在使用此模块?它似乎不在 /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
答案1
当你执行 时lsmod
,蓝牙模块的引用计数是多少?此外,
lsmod | grep "bluetooth"
只是为了确保没有遗漏其他依赖项。
按以下顺序弹出模块:
rmmod bnep
rmmod hidp
rmmod rfcomm
rmmod l2cap
然后尝试
rmmod bluetooth
lsmod
答案2
那么,禁用 /etc/modprobe.conf 中的模块或将 /etc/modprobe.d/blacklist 下的列表设为黑色,然后重新启动怎么样?
是否有某些东西映射到 /dev 设备并且您可以在其上使用 lsof?
我想您已经尝试过正常的选项......