Ich muss alle beschreibbaren Speichergeräte finden, die an einen bestimmten Computer angeschlossen sind, unabhängig davon , ob sie bereitgestellt sind oder nicht .
Der blöde Weg, dies zu tun, wäre, jeden Eintrag zu versuchen/dev
, der einem beschreibbaren Gerät entspricht ( hd* and sd*
) ......
Gibt es eine bessere Lösung oder sollte ich mich an diese halten?
Antworten:
/proc/partitions
listet alle Blockgeräte und Partitionen auf, die das System erkennt. Sie können dann versuchen, mithilfe vonfile -s <device>
zu bestimmen, welche Art von Dateisystem auf der Partition vorhanden ist, falls vorhanden.quelle
Sie können immer das tun,
fdisk -l
was ziemlich gut zu funktionieren scheint, selbst auf seltsamen Setups wie EC2 xvda-Geräten.Hier ist ein Speicherauszug für eine m1.large-Instanz:
Während
mount
sagt:Und
/proc/partitions
sagt:Randnotiz
Wie das
fdisk -l
funktioniert, würde ich gerne selbst wissen.quelle
fdisk -l
Ich bin mir nicht sicher, ob Sie jemals herausgefunden haben, wie es funktioniert, aber ich dachte, Sie möchten es vielleicht wissen: Es liest/proc/partitions
und iteriert dann,/sys/dev/block/*
wobei eine Reihe von Symlinks zu den wahren Repräsentanten der Geräte in sysfs enthalten sind. Sie können diese Informationen herausfinden, indem Siefdisk
unterstrace
:)Sie können auch versuchen, lsblk ... ist in Util-Linux ... aber ich habe auch eine Frage
kein Ergebnis
fdisk ist gut, aber nicht so gut ... scheint nicht alles "sehen" zu können
In meinem Beispiel habe ich einen Stick, in den auch ein Kartenleser eingebaut ist, und ich kann nur den Stick mit fdisk sehen:
aber nicht die Karte (Karte ist / dev / sdl)
Außerdem ist die Datei -s ineffizient ...
das ist schön ... ABER
Um Informationen zu einer Festplatte anzuzeigen, auf die fdisk nicht zugreifen kann, können Sie parted verwenden:
quelle
ls /sys/block
quelle
Verwenden von HAL (Kernel 2.6.17 und höher):
quelle
Moderne Linux-Systeme haben normalerweise nur Einträge in / dev für vorhandene Geräte. Wenn Sie also hda * und sda * durchlaufen, wie Sie vorschlagen, funktioniert dies ziemlich gut.
Andernfalls befindet sich möglicherweise etwas in / proc, das Sie verwenden können. Von einem kurzen Blick dort hätte ich gesagt, dass / proc / partitions so aussieht, als könnte es das tun, was Sie brauchen.
quelle
libsysfs sieht möglicherweise nützlich aus, jedoch nicht direkt aus einem Shell-Skript. Im Lieferumfang ist ein Programm namens systool enthalten, das genau das tut, was Sie möchten. Es ist jedoch möglicherweise einfacher, direkt in / sys zu schauen, als ein anderes Programm zu verwenden, um dies für Sie zu tun.
quelle