Muszę znaleźć wszystkie zapisywalne urządzenia magazynujące podłączone do danej maszyny, niezależnie od tego , czy są zamontowane , czy nie .
Najgłupszym sposobem na zrobienie tego byłoby wypróbowanie każdego wpisu /dev
odpowiadającego zapisywalnym urządzeniom ( hd* and sd*
) ......
Czy jest lepsze rozwiązanie, czy powinienem trzymać się tego?
Odpowiedzi:
/proc/partitions
wyświetli listę wszystkich urządzeń blokowych i partycji, które system rozpoznaje. Następnie możesz spróbować użyć,file -s <device>
aby określić, jaki rodzaj systemu plików znajduje się na partycji, jeśli taki istnieje.źródło
Zawsze możesz to zrobić
fdisk -l
co wydaje się działać całkiem nieźle, nawet na dziwnych konfiguracjach, takich jak urządzenia EC2 xvda.Oto zrzut dla instancji m1.large:
Podczas gdy
mount
mówi:I
/proc/partitions
mówi:Dygresja
Jak
fdisk -l
działa, chciałbym sam się dowiedzieć.źródło
fdisk -l
działa, ale pomyślałem, że możesz chcieć wiedzieć: czyta,/proc/partitions
a następnie iteruje, przez/sys/dev/block/*
co zawiera zestaw dowiązań symbolicznych do prawdziwego odwzorowania urządzeń w sysfs. Możesz znaleźć te informacje, uruchamiającfdisk
podstrace
:)możesz także spróbować lsblk ... jest w util-linux ... ale mam też pytanie
brak wyników
fdisk jest dobry, ale niezbyt dobry… wygląda na to, że nie może „widzieć” wszystkiego
w moim konkretnym przykładzie mam pendrive z wbudowanym czytnikiem kart i widzę go tylko przy użyciu fdisk:
ale nie karta (karta jest / dev / sdl)
również file -s jest nieefektywne ...
to miłe ... ALE
aby zobaczyć informacje o dysku, do którego fdisk nie może uzyskać dostępu, możesz użyć parted:
źródło
ls /sys/block
źródło
Korzystanie z HAL (jądro 2.6.17 i nowsze):
źródło
Nowoczesne systemy linuxowe zwykle mają wpisy w / dev tylko dla istniejących urządzeń, więc przejście przez hda * i sda *, jak sugerujesz, działałoby całkiem dobrze.
W przeciwnym razie w / proc może być coś, czego możesz użyć. Po szybkim spojrzeniu na to, powiedziałbym, że / proc / partitions wygląda na to, że może zrobić to, czego potrzebujesz.
źródło
libsysfs wygląda na potencjalnie przydatne, ale nie bezpośrednio ze skryptu powłoki. Jest dołączony do niego program o nazwie systool, który zrobi to, co chcesz, chociaż może być łatwiej po prostu zajrzeć bezpośrednio do / sys niż używać innego programu, który zrobi to za Ciebie.
źródło