Digamos que conecto varias unidades USB que no se montan automáticamente. ¿Cómo puedo averiguar qué archivo de dispositivo pertenece a qué dispositivo físico, para poder montarlo, por ejemplo?
Estoy ejecutando Mac OS X, pero prefiero una respuesta que funcione en todos los sistemas Unix (o al menos los más populares). Tuve este problema con Linux en el pasado.
Respuestas:
Usando udev:
Puede obtener consultas de información útiles
udev
(en sistemas que lo usan, casi todos los Linux de tipo escritorio). Por ejemplo, si desea saber con qué unidad conectada está asociada/dev/sdb
, puede usar:Le mostrará una lista de propiedades de ese dispositivo, incluida la serie (ID_SERIAL_SHORT). Con esa información, puede ver la salida
lsusb -v
y conocer cosas como el fabricante y el nombre del producto.Un camino más corto para hacer esto sería
y vea la línea con coincidencia
$ID_VENDOR_ID:$ID_MODEL_ID
en la salida mucho más corta delsusb
.Otra opción útil es
udevadm monitor
. Úselo si desea saber qué nodo de dispositivo se crea en el punto de conectar el dispositivo . Así que primero correY luego conecte el dispositivo. Verá los nombres de los dispositivos de bloque detectados (discos / particiones) impresos al final de cada línea de salida.
Un ejemplo práctico de función de shell:
Aquí hay una función que puede poner en su
.bashrc
(o.zshrc
):Úselo así:
listusbdisks
- para reconocer todos los/dev/sdx
dispositivos;listusbdisks sdb
olistusbdisks /dev/sdb
olistusbdisks sdb sdc
- para obtener información sobre ciertos dispositivos solamente;listusbdisks -v [optional devices as above]
- para mostrar salidas detalladas delsusb
[Editar]: se agregó alguna funcionalidad como consultar muchos dispositivos, verificar los montajes y controlar la verbosidad de
lsusb
.fuente
udev
.lsusb
también es un programa opcional. Pero ambos son extremadamente comunes.dmesg
. Pero esto no será útil si el dispositivo ya está enchufado y si hay más dispositivos conectados después del primero. :)No hay una respuesta universal. En Linux, la forma más sencilla es probablemente activar la utilidad de disco gnome y mostrará todos los discos detectados, estén montados o no. Desde la línea de comandos, puede consultar la salida de
blkid
oudevadm info --export-db
.fuente
En Mac OS X puedes intentar usarlo
diskutil list
.fuente
Con respecto a todos los Unix, no creo que esto sea factible.
Los buses externos habituales de hoy no usan un esquema de numeración fijo para sus puertos, como lo hizo IDE. Por lo tanto, las únicas fuentes de datos restantes para la asignación que necesita son los nombres de los fabricantes de las unidades, sus números de serie o los UID de las particiones.
Los nombres de los fabricantes no son necesariamente únicos en una máquina determinada (supongamos que conecta dos unidades externas de la misma serie; se identificarán de forma idéntica). Los números de serie no son "visibles desde el exterior", como lo son los UID de partición.
Entonces, la única solución universal que se me ocurre es etiquetar las unidades físicas con el número de serie y usar el comando udevadm que figura en la respuesta de rozcietrzewiacz, si UDEV está disponible.
fuente