Gibt es einen einfachen Befehl, der den Geräteknoten einer Festplatte als Eingabe verwendet und mir mitteilt, wo (und ob) diese Festplatte gemountet ist? Ist es möglich, den Einhängepunkt selbst zu erhalten, damit ich ihn an einen anderen Befehl übergeben kann?
Ich arbeite an einem Debian Squeeze Live-System mit einer minimalen Installation (ich kann bei Bedarf zusätzliche Pakete installieren).
Akzeptierte Antwort:
Unter Linux können Sie Einhängepunktinformationen direkt vom Kernel in /proc/mounts
erhalten . Der mount
Programm zeichnet ähnliche Informationen in /etc/mtab
auf . Die Pfade und Optionen können unterschiedlich sein, wie /etc/mtab
stellt dar, was mount
ist an den Kernel übergeben, wohingegen /proc/mounts
zeigt die Daten, wie sie im Kernel zu sehen sind. /proc/mounts
ist immer aktuell, wohingegen /etc/mtab
möglicherweise nicht, wenn /etc
war irgendwann schreibgeschützt, was von den Boot-Skripten nicht erwartet wurde. Das Format ähnelt /etc/fstab
.
In beiden Dateien enthält das erste durch Leerzeichen getrennte Feld den Gerätepfad und das zweite Feld den Einhängepunkt.
awk -v needle="$device_path" '$1==needle {print $2}' /proc/mounts
oder wenn Sie kein awk haben:
grep "^$device_path " /proc/mounts | cut -d ' ' -f 2
Es gibt eine Reihe von Grenzfällen, in denen Sie möglicherweise nicht das erhalten, was Sie erwarten. Wenn das Gerät über einen anderen Pfad in /dev
gemountet wurde das dasselbe Gerät bezeichnet, werden Sie es so nicht bemerken. In /proc/mounts
, Bindungshalterungen sind vom Original nicht zu unterscheiden. Es kann mehr als eine Übereinstimmung geben, wenn ein Einhängepunkt einen anderen überschattet (dies ist ungewöhnlich).
In /proc/self
oder /proc/$pid
, gibt es pro Prozess ein mounts
Datei, die die globale Datei nachahmt. Die Einhängeinformationen können je nach Prozess variieren, zum Beispiel aufgrund von chroot
. Es gibt eine zusätzliche Datei namens mountinfo
die ein anderes Format hat und mehr Informationen enthält, insbesondere die Haupt- und Nebennummern des Geräts. Aus der Dokumentation:
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
(1) mount ID: unique identifier of the mount (may be reused after umount)
(2) parent ID: ID of parent (or of self for the top of the mount tree)
(3) major:minor: value of st_dev for files on filesystem
(4) root: root of the mount within the filesystem
(5) mount point: mount point relative to the process's root
(6) mount options: per mount options
(7) optional fields: zero or more fields of the form "tag[:value]"
(8) separator: marks the end of the optional fields
(9) filesystem type: name of filesystem of the form "type[.subtype]"
(10) mount source: filesystem specific information or "none"
(11) super options: per super block options
Wenn Sie also anhand der Nummer nach einem Gerät suchen, können Sie dies folgendermaßen tun:
awk -v dev="$major:minor" '$3==dev {print $5}'
awk -v dev="$(stat -L -c %t:%T /dev/block/something)" '$3==dev {print $5}'