问题 杀死设备或资源繁忙的进程:'/ dev / ttyUSB0'?


我使用以下Python代码连接到我的Arduino板。

device=glob.glob("/dev/ttyUSB*")[0]
time.sleep(1)
arduino = serial.Serial(device, 115200, timeout=5)

它通常可以工作,但不知何故,其他一些进程必须在重启后访问该板,从而给出错误

serial.serialutil.SerialException:无法打开端口/ dev / ttyUSB0:[Errno 16]设备或资源忙:'/ dev / ttyUSB0'

当拔出并重新插入USB插件时,我可以正常执行Python代码,而不会发生错误。如何避免阻止端口的任何其他进程?我如何找出出现此错误的原因?


6158
2017-12-02 16:32


起源



答案:


您可以使用

$ fuser /dev/ttyUSB0

列出使用该文件的进程的PID。或者,如果你的 fuser 命令支持你可以使用 -k 杀死他们的选择。


12
2017-12-02 16:37



例如,如果您使用GNU屏幕访问a,则这并不总是有效 ttyUSBx device,然后退出使用 Ctrl-C,您将获得“设备忙”但不会显示上述命令。 - gbmhunter
我该如何解决呢?!?! :d - 0xbaadf00d


答案:


您可以使用

$ fuser /dev/ttyUSB0

列出使用该文件的进程的PID。或者,如果你的 fuser 命令支持你可以使用 -k 杀死他们的选择。


12
2017-12-02 16:37



例如,如果您使用GNU屏幕访问a,则这并不总是有效 ttyUSBx device,然后退出使用 Ctrl-C,您将获得“设备忙”但不会显示上述命令。 - gbmhunter
我该如何解决呢?!?! :d - 0xbaadf00d