A pergunta já tem uma resposta aceita, mas decidi compartilhar minha variação da solução fornecida por < href="https://unix.stackexchange.com/users/977/derobert"> derobert .
Minhas exigências eram um pouco diferentes - além de fornecer números de índice "incrementados" para novos dispositivos - eu queria readquirir números de índice que foram abandonados por dispositivos que foram removidos do sistema.
A regra do udev para configurar a variável de ambiente seria algo como isto:
IMPORT{program}="/usr/local/sbin/unique-num /dev miner MINER_NUM"
Na minha solução, eu não uso um arquivo para acompanhar o índice, eu simplesmente faço um loop sobre as <-href="/ questions / tagged / symlink" class="post-tag" title="show questions existentes marcou 'symlink' "> symlink e encontre o primeiro índice disponível:
/usr/local/sbin/unique-num
script:
#!/bin/bash
if [ $# -ne 3 ]; then
echo "Usage: $0 location prefix var-name" >&2
exit 1
fi
location="$1"
prefix="$2"
key="$3"
needindex=1
index=0
while [ $needindex -eq 1 ]
do
if [ ! -e $location/$prefix$index ]; then
needindex=0
echo "$key=$index"
else
(( index++ ))
fi
done
Isso, é claro, imprimirá o var-name com o primeiro índice disponível, por exemplo, se esses symlink já existe:
miner0
miner1
miner2
e, em seguida, miner1
é separado do sistema - ficamos com:
miner0
miner2
A execução do script retornará:
MINER_NUM=1
... pois agora é o primeiro índice disponível .