Digamos que conecte várias unidades USB que não são montadas automaticamente. Como posso descobrir qual arquivo de dispositivo pertence a qual dispositivo físico, para que eu possa montá-lo, por exemplo?
Estou executando o Mac OS X, mas prefiro uma resposta que funcione em todos (ou pelo menos nos mais populares) sistemas Unix. Eu tive esse problema com o Linux no passado.
Respostas:
Usando o udev:
Você pode obter informações úteis
udev
(em sistemas que a utilizam - quase todos os Linux do tipo desktop, com certeza). Por exemplo, se você deseja saber a qual unidade conectada está associada/dev/sdb
, você pode usar:Ele mostrará uma lista de propriedades desse dispositivo, incluindo o serial (ID_SERIAL_SHORT). Com essas informações, você pode ver a saída
lsusb -v
e descobrir coisas como o fabricante e o nome do produto.Um caminho mais curto para fazer isso seria
e veja a linha com correspondência
$ID_VENDOR_ID:$ID_MODEL_ID
na saída muito menor delsusb
.Outra opção útil é
udevadm monitor
. Use-o se desejar saber qual nó do dispositivo é criado no momento da conexão do dispositivo . Então, primeira corridaE então conecte o dispositivo. Você verá os nomes dos dispositivos dos dispositivos de bloco detectados (discos / partições) impressos no final de cada linha de saída.
Um exemplo prático da função shell:
Aqui está uma função que você pode colocar no seu
.bashrc
(ou.zshrc
):Use-o assim:
listusbdisks
- reconhecer todos os/dev/sdx
dispositivos;listusbdisks sdb
oulistusbdisks /dev/sdb
oulistusbdisks sdb sdc
- para obter informações apenas sobre determinados dispositivos;listusbdisks -v [optional devices as above]
- para mostrar resultados detalhados delsusb
[Editar]: Adicionadas algumas funcionalidades, como consultar muitos dispositivos, verificar montagens e controlar a verbosidade de
lsusb
.fonte
udev
.lsusb
também é um programa opcional. Mas ambos são extremamente comuns.dmesg
. Mas isso não será útil se o dispositivo já estiver conectado e se houver mais dispositivos conectados após o primeiro. :)Não há resposta universal. No Linux, a maneira mais simples é provavelmente iniciar o utilitário de disco gnome e ele mostrará todos os discos detectados, estejam eles montados ou não. Na linha de comando, você pode consultar a saída de
blkid
ouudevadm info --export-db
.fonte
No Mac OS X, você pode tentar usar
diskutil list
.fonte
Com relação a todos os Unixes, não acho que isso seja viável.
Os barramentos externos comuns hoje em dia não usam um esquema de numeração fixo para suas portas, como o IDE fez. Portanto, as únicas fontes de dados restantes para o mapeamento necessárias são os nomes dos fabricantes das unidades, seus números de série ou os UIDs das partições.
Os nomes dos fabricantes não são necessariamente exclusivos em uma determinada máquina (suponha que você conecte duas unidades externas da mesma série - elas serão identificadas de forma idêntica). Os números de série não são "visíveis de fora", assim como os UIDs da partição.
Portanto, a única solução universal em que posso pensar é rotular as unidades físicas com o número de série e usar o comando udevadm fornecido na resposta de rozcietrzewiacz, se o UDEV estiver disponível.
fonte