В этом случае это довольно просто, можно использовать killall
уничтожить, или отправить любой другой сигнал, к набору процессов сразу. Одна из опций "фильтрации" является владельцем: killall --user name1
Взгляните на sysfs файловую систему. Пример для моего последовательного USB:
$ lsusb
Bus 003 Device 016: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
$ ls -l /sys/bus/usb-serial/devices
lrwxrwxrwx 1 root root 0 Jul 4 17:37 ttyUSB0 -> ../../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0/usb3/3-1/3-1:1.0/ttyUSB0
$ $ grep PRODUCT= /sys/bus/usb-serial/devices/ttyUSB0/../uevent
PRODUCT=67b/2303/300
Как видете, ttyUSB0
карты к 067b:2303
на моем компьютере. Другой местоположения, которые стоит исследовать, /sys/class/tty/
. Обратите внимание на символьные ссылки.
У меня была подобная проблема.
Запишите это в/etc/udev/rules.d/50-usb.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", SYMLINK+="ONDA"
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", SYMLINK+="HUAWEI"
в конец. Перезагрузка.
Теперь можно использовать /dev/ONDA
добираться до Вашего устройства ОНДЫ.
Если Вы хотите, чтобы некорневые пользователи смогли использовать их, то добавьте
, MODE="0666"
в конец каждой строки.
Я использовал бы udev и записал бы некоторые правила, которые создают символьные ссылки для устройств.
Для получения достаточной информации для различения устройств пробуют что-то вроде этого за все устройства:
$ udevadm info --query all --name /dev/ttyUSB0 --attribute-walk
Следующие команды дадут мне список имен устройств ttyUSB, связанных с 19d2:0016 (который является идентификатором «модемного режима» ZTE MF831 LTE stick, ваш может отличаться.
for i in $(find -L /sys/bus/usb/devices/ -maxdepth 2 -name "ttyUSB*"); do
egrep -i "v19d2p0016(.*)in02" $i/../modalias >/dev/null && echo "/dev/${i##*/}"
done
Это будет циклическое прохождение через список файлов с именем ttyUSB*, включая символические ссылки, в /sys/bus/usb/devices. В результатах мы будем искать файл с именем modalias и искать строку, содержащую идентификатор поставщика «v» «19d2» и идентификатор продукта «p» 0016. Если выходные данные совпадают, мы будем повторять строку с префиксом «/dev/» перед USB? имя. Афаик первый или обычно последний (наибольшее число)— порт модема для устройств ZTE. Вы можете повторить результаты в файле в /tmp/ и head -n1 или tail -n1 строки соответственно. Если у вас есть концентраторы, вам, вероятно, потребуется увеличить maxdepth.
Это не самый элегантный способ, но он будет работать практически на любом варианте Linux.
Вы можете попробовать проверить, зарегистрированы ли ваши устройства (с )под /dev/serial/by -id/
ls -l /dev/serial/by-id
Эти имена должны быть согласованы и указывать (символическую ссылку )на правильный ttyUSBx
cat
uevent
файл от результатаfind /sys -name ttyACM0
, например. Замените именем узла своего последовательного устройства. – sherrellbc 29.03.2017, 23:15