Necesito encontrar todos los dispositivos de almacenamiento de escritura conectados a una máquina determinada, estén o no montados.
La forma tonta de hacer esto sería probar cada entrada /dev
que corresponda a un dispositivo de escritura ( hd* and sd*
) ...
¿Existe una solución mejor o debería seguir con esta?
Respuestas:
/proc/partitions
enumerará todos los dispositivos de bloque y particiones que reconoce el sistema. Luego puede intentar usarfile -s <device>
para determinar qué tipo de sistema de archivos está presente en la partición, si lo hay.fuente
Siempre puede hacer lo
fdisk -l
que parece funcionar bastante bien, incluso en configuraciones extrañas como dispositivos EC2 xvda.Aquí hay un volcado para una instancia m1.large:
Mientras
mount
dice:Y
/proc/partitions
dice:Nota al margen
Cómo
fdisk -l
funciona es algo que me encantaría conocer.fuente
fdisk -l
funciona, pero pensé que te gustaría saber: lee/proc/partitions
y luego itera a través del/sys/dev/block/*
cual contiene un conjunto de enlaces simbólicos a la verdadera reproducción de los dispositivos en sysfs. Puede encontrar esta información ejecutandofdisk
enstrace
:)también puedes probar lsblk ... está en util-linux ... pero también tengo una pregunta
sin resultados
fdisk es bueno pero no tan bueno ... parece que no puede "ver" todo
en mi ejemplo particular, tengo un palo que también tiene un lector de tarjetas integrado y solo puedo ver el palo usando fdisk:
pero no la tarjeta (la tarjeta es / dev / sdl)
además, el archivo -s es ineficiente ...
eso es lindo ... PERO
para ver información sobre un disco al que no puede acceder fdisk, puede usar parted:
fuente
ls /sys/block
fuente
Usando HAL (kernel 2.6.17 y superior):
fuente
Los sistemas Linux modernos normalmente solo tendrán entradas en / dev para los dispositivos que existen, por lo que pasar por hda * y sda * como usted sugiere funcionaría bastante bien.
De lo contrario, puede haber algo en / proc que pueda usar. De un vistazo rápido allí, diría que / proc / partitions parece que podría hacer lo que necesita.
fuente
libsysfs parece potencialmente útil, pero no directamente desde un script de shell. Hay un programa que viene con él llamado systool que hará lo que usted quiera, aunque puede ser más fácil buscar en / sys directamente en lugar de usar otro programa para hacerlo por usted.
fuente