Как Linux решает, когда повторно использовать второстепенные номера устройств USB?

Использование ассоциативного массива в качестве помощника для отслеживания элементов в одном списке (в качестве ключей ), а затем быстрая проверка элементов другого списка по этим:

#!/bin/bash

list1=( 1 3 5 6 7 8 bumble bee )
list2=( 2 4 4 4 6 7 8 bee beer )

declare -A seen

for item in "${list1[@]}"; do
    seen[$item]=1
done

for item in "${list2[@]}"; do
    if [ -n "${seen[$item]}" ]; then
        intersection+=( "$item" )
    fi
done

echo 'Intersection:'
printf '\t%s\n' "${intersection[@]}"

При этом используются точные совпадения строк для сравнения элементов между двумя списками.

Результат:

Intersection:
    6
    7
    8
    bee
3
10.03.2021, 12:13
1 ответ

Я наполовину -отвечу на свой вопрос :Я не смог найти четкой документации о повторном использовании номеров устройств, но я нашел способ присвоить устройству более уникальный номер.

Хитрость заключается в использовании инструкции udev's IMPORTдля генерации случайного числа, например, это правило:

KERNEL=="ttyUSB*", IMPORT{program}="/bin/bash -c 'echo FOORAND=$RANDOM'", SYMLINK+="my-device-%n-%E{FOORAND}"

Создает символические ссылки на устройства ttyUSB, такие как /dev/my-device-0-3853. При добавлении нового устройства оно получает новый случайный номер.

Номер ядра(%n)включен, а также случайное число, чтобы гарантировать, что символические ссылки, существующие в любой момент времени, всегда уникальны.

0
19.03.2021, 09:31

Теги

Похожие вопросы