Убейте процесс, который вызывает занятие устройства или ресурса: '/dev/ttyUSB0'?

Я подключаюсь к своей плате Arduino со следующим кодом Python.

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

Как правило, это работает, но каким-то другим процессом должен быть доступ к плате после перезагрузки, давая мне ошибку

serial.serialutil.SerialException: не удалось открыть порт /dev/ttyUSB 0: [Errno 16] Устройство или ресурс занят: '/dev/ttyUSB0'

При отключении и повторной загрузке USB-штекера я могу нормально выполнять код Python без ошибки. Как я могу избежать любого другого процесса, блокирующего порт? И как узнать причину этой ошибки?

Ответ 1

Вы можете использовать

$ fuser /dev/ttyUSB0

чтобы перечислить PID процессов, используя этот файл. В качестве альтернативы, если ваша команда fuser поддерживает ее, вы можете использовать параметр -k, чтобы убить их.