如何确定哪些进程正在访问 USB 设备?

如何确定哪些进程正在访问 USB 设备?

似乎与 USB UPS 设备的通信会间歇性中断或受阻。我收到以下错误:

pal[17421]: [HidDevice::claim] Failed to disconnect device '/dev/bus/usb/001/003'

pal[17421]: [HidManager::updateDevices] Failed to claim Device '/dev/bus/usb/001/003'

kernel: [ 9997.165994] usb 1-4.4: usbfs: process 15320 (pald) did not claim interface 0 before use

我想终止任何可能试图监视或指示该设备的进程。例如,我知道 xfce4-power-manager 正在运行,但仅仅终止它似乎无法解决问题。

对于 Ubuntu 16.04 x86_64,如何列出访问总线 001 上的 USB 设备 003 的所有进程?

或者也许可以采用不同的方法:

对于运行 xfce4-desktop 的 Ubuntu 16.04 安装,面板上似乎有一个电源指示灯、一个电源管理器插件和一个电源通知器。

假设没有其他额外安装的软件包,默认情况下,所有进程都会监视和指示有关不间断电源的什么信息?

答案1

我通过移除电池面板插件、通知器、指示器以及原生电池电源管理解决了这个问题。

请注意,对于我的情况来说,使用第三方 UPS 管理解决方案是必要的,但通常 Ubuntu 也提供了不错的选择。

通过执行以下操作,可以纠正 hid 设备的争用:

禁用 upower sudo apt-get remove upower --purge

禁用指示器电源后端 sudo vi /usr/share/upstart/sessions/indicator-power.conf

更改执行 /usr/lib/x86_64-linux-gnu/indicator-power/indicator-power-service

到#exec /usr/lib/x86_64-linux-gnu/indicator-power/indicator-power-service

删除不需要的软件包 sudo apt-get autoremove --purge

重启。

这使得 tripplite poweralert 守护进程能够与 UPS 正确通信。

另外,作为参考,在本机电源服务被禁用之前的争用期间,电源警报控制台可能会处于损坏状态。

纠正方法是:

停止电源警报守护进程:sudo killall -9 pald

从 /var/tripplite/poweralert/data/ 中删除 dat 文件

根据需要重新启动或守护 pald。java 应用程序现在应该可以正确运行并且每次都可以连接。

希望有一天这能对某人有所帮助。-c

相关内容