¿Cómo puedo saber si es un disco duro local o una llave USB? Prefiero una forma de hacerlo sin privilegios de root./dev/sdX
OK, udevadmayudó mucho:
Para HDD local:
udevadm info --query=all --name=sdb | grep ID_BUS
E: ID_BUS=ataPara llave USB:
udevadm info --query=all --name=sdc | grep ID_BUS
E: ID_BUS=usb
                    
                        bash
                                hardware
                                hard-disk
                                administration
                                
                    
                    
                        margarita
fuente
                
                fuente

Respuestas:
Hay algunas formas de saber sin privilegios de root, muchas de ellas difíciles / hacky:
Utilizando
/dev/disk/by-id:Si esto responde con algo así
/dev/disk/by-id/usb-blah-blah-blah, entonces es un disco USB. Otros prefijos incluyenata,dm,memstick,scsi, etc.El uso
/dev/disk/by-pathno es significativamente diferente:Obtendrás algo como
/dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0. Esto muestra la ruta del dispositivo que conduce al disco. En este caso, una ruta aproximada es PCI → USB → disco. (tenga en cuenta el-usb-).Usando udev (ejecuto Debian. Mi
udevadmestá en el/sbinque no está en mi$PATH- el tuyo podría estar en otro lugar, dentro o fuera de tu$PATH):Obtendrá el tipo de bus en el que se encuentra el dispositivo. Elimine la
| grep ID_BUSlista completa de información (es posible que deba agregarla|less).Si ha
lshwinstalado, la respuesta de Huygens también puede funcionar:Y mire a través de la salida de su disco. En
less, pruebe /sdX y mire lasbus infolíneas anteriores, la primera solo diráscsi@…, pero la otra varias líneas antes será más esclarecedora. Sin embargo, realmente debería ejecutar esto como superusuario, por lo que puede no ser adecuado. (síntomas: en la computadora portátil lo probé, enumeraba el disco SATA pero no el USB, ejecutándose consudoambos listados)También hay otros, más o menos directos que estos.
fuente
esatap?Conozco una solución, pero, lamentablemente, requiere privilegio de root. De todos modos, aún puede resultarle útil:
Para cada dispositivo, imprimirá el nombre lógico (por ejemplo,
/dev/sda) y la información del bus, que en el caso de un dispositivo USB sería algo así como 'usb @ 1: 2'.Salida de muestra:
fuente
Podrías usar
lsblk:donde
-do--nodepssignifica no imprimir esclavos y /-o name,trano--output name,tranlista de medios solo el nombre del dispositivo y el tipo de transporte del dispositivo. Agreguerma la lista de columnas de salida para ver qué dispositivos son extraíbles (1sitrue):fuente
Esto no necesita privilegios de root (pero muchos de estos comandos usan y dependen de bashisms, por lo que no funcionarán en todos los shells compatibles con POSIX):
Hay una forma rápida de preguntar sobre :
sdXEl archivo realmente interesante es
capability. En mi Debian, tengo ungenhd.harchivo, así que:En absoluto, solo para saber si la bandera
removableestá activada:asi que
funciona probando si el
capabilityvalor (que es 52 en misdaejemplo anterior) tiene el1conjunto de bits (es decir, si es un número impar).Pero Linux muestra todos los indicadores
/sys, por lo que pedirlos/sys/block/sdX/removablees mucho más simple. ;-)Por lo tanto, podría ser una llave USB
removable, pero como hay muchos dispositivos extraíbles , preferiría asegurarme de que el tamaño del medio sea mayor que 0 (como una bandeja de CD-ROM descargada, para muestra) y que el dispositivo no esté en uso: al mirar esosdX/trace/enableno está enlazado:Nota: Todo esto está bien probado en bash v4.2 +.
En bash , puedes usar esta forma muy rápida y eficiente:
En mi sistema, hay 4 llaves USB, pero una de ellas (
sde) ya está montada, por lo que la salida del comando anterior:Mi guión:
Escribí una pequeña función bash para instalar Debian Live actualizado.
# La primera parte solo muestra el tamaño legible por humanos. La función comienza allí.
Esto asigna la respuesta, como una matriz , a la variable dada como primer argumento o variable
$REPLY:(El último campo puede contener espacios).
fuente
…,device/{model,type,vendor,uevent}? (2) ¿Puede explicar sus comandos GENHD y sus comandos "trace / enable"? (3) Su[ $(( $(< $file ) & 1 )) -ne 0 ]prueba se puede simplificar (acortar) a(( $(< $file ) & 1 ))./usr/src/*/include/linux. Tratarsed -ne 's/#define.*GENHD_FL_\([A-Z0-9_]*\)[ \t]*\([0-9]*\) \?.*$/GENHD_FLAGS[\2]="\1"/p;' /usr/src/*/include/linux/genhd.h. (3) SíSugiero simplemente usar
hdparmolshw(que puede necesitar instalar), y usarsudopara ejecutarlo como root.todos deberían darle información.
fuente
hdparm -i /dev/sda /dev/sda: HDIO_DRIVE_CMD(identify) failed: Invalid exchange HDIO_GET_IDENTITY failed: Invalid argumentAcabo de leer el valor de
/sys/block/sdX/removable.Por ejemplo:
/dev/sdces una llave USB (podría ser una tarjeta SD o cualquier otro medio extraíble).fuente
dmesges el método más fácil:( siendo el nombre de su dispositivo, por ejemplo )
sdXsdaDesde el comando anterior, verá lo siguiente:
fuente
dmesglee búfer de mensajes circular del núcleo por lo que esta solución sólo funciona relativamente poco tiempo después de un reinicioPuede usar los siguientes comandos para obtener nodos de dispositivos SD, USB y SATA.
fuente
/dev/sdX, ¿cómo puedo saber si es un HDD local o una llave USB?" determinación. (2) Preferimos respuestas que dan comandos y las explicamos sobre respuestas que solo proporcionan comandos. Por favor explique lo que está haciendo. Por favor no responda en los comentarios; edite su respuesta para que sea más clara y completa. … (Continúa)awkes una herramienta muy poderosa. Muchos principiantes publican respuestas que hacengrepy canalizan su salidaawk. Esto rara vez es necesario;awkpuede hacer coincidencia de patrones y puede seleccionar la entrada deseada sin ayuda degrep. Tiene una canalización de dosgrepcomandos, entubadosawk, y luego un segundoawkcomando. Esto se puede simplificar enormemente; por favor, inténtalo. (4) Además, para mayor claridad, es posible que desee cambiar`…`a$(…): vea esto , esto y esto .Soy vago, inxi me dice esto fácilmente:
Creo que también me dice si es FireWire y tal vez otro tipo, pero tendría que comprobarlo dos veces, no he usado esos tipos en mucho tiempo.
También me dice que use -p si las particiones son remotas, como los montajes samba o nfs.
fuente
Después de enchufar el dispositivo USB, ejecute
dmesgen una ventana de consola. Se le proporcionarán algunos consejos.Por ejemplo, dirá algo parecido a "Dispositivo conectado, almacenamiento masivo / dev / sdd".
fuente