Preciso encontrar todos os dispositivos de armazenamento graváveis conectados a uma determinada máquina, estejam eles montados ou não .
A maneira estúpida de fazer isso seria tentar todas as entradas /dev
que correspondam a dispositivos graváveis ( hd* and sd*
) ......
Existe uma solução melhor ou devo ficar com esta?
Respostas:
/proc/partitions
irá listar todos os dispositivos de bloco e partições que o sistema reconhece. Você pode então tentarfile -s <device>
determinar que tipo de sistema de arquivos está presente na partição, se houver.fonte
Você sempre pode fazer o
fdisk -l
que parece funcionar muito bem, mesmo em configurações estranhas, como dispositivos EC2 xvda.Aqui está um dump de uma instância m1.large:
Enquanto
mount
diz:E
/proc/partitions
diz:Nota
Como
fdisk -l
funciona é algo que eu adoraria saber.fonte
fdisk -l
funciona, mas achei que você gostaria de saber: ele lê/proc/partitions
e, em seguida, itera através do/sys/dev/block/*
qual contém um conjunto de links simbólicos para o representante verdadeiro dos dispositivos em sysfs. Você pode encontrar essas informações executandofdisk
emstrace
:)você também pode tentar o lsblk ... está no util-linux ... mas eu também tenho uma pergunta
sem resultado
O fdisk é bom, mas não tão bom ... parece que não consegue "ver" tudo
em meu exemplo particular, tenho um pendrive que também possui um leitor de cartão integrado e só consigo ver o pendrive usando fdisk:
mas não o cartão (cartão sendo / dev / sdl)
além disso, o arquivo -s é ineficiente ...
isso é bom ... MAS
para ver informações sobre um disco que não pode ser acessado pelo fdisk, você pode usar o parted:
fonte
ls /sys/block
fonte
Usando HAL (kernel 2.6.17 e superior):
fonte
Os sistemas Linux modernos normalmente só terão entradas em / dev para dispositivos existentes, portanto, passar por hda * e sda * como você sugere funcionaria muito bem.
Caso contrário, pode haver algo em / proc que você possa usar. Olhando rapidamente, diria que / proc / partitions parece que pode fazer o que você precisa.
fonte
libsysfs parece potencialmente útil, mas não diretamente de um script de shell. Há um programa que vem com ele, chamado systool, que fará o que você quiser, embora possa ser mais fácil apenas olhar em / sys diretamente em vez de usar outro programa para fazer isso por você.
fonte