Unter Linux können Sie Mount-Point-Informationen direkt vom Kernel in abrufen /proc/mounts
. Das mount
Programm zeichnet ähnliche Informationen auf /etc/mtab
. Die Pfade und Optionen können unterschiedlich sein, da sie /etc/mtab
angeben, was mount
an den Kernel übergeben wurde, während /proc/mounts
die Daten so angezeigt werden, wie sie im Kernel angezeigt werden . /proc/mounts
ist immer auf dem neuesten Stand, /etc/mtab
möglicherweise jedoch nicht, wenn es zu einem /etc
Zeitpunkt schreibgeschützt war, der 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 du keine awk hast:
grep "^$device_path " /proc/mounts | cut -d ' ' -f 2
Es gibt eine Reihe von Randfällen, in denen Sie möglicherweise nicht das bekommen, was Sie erwarten. Wenn das Gerät über einen anderen Pfad gemountet wurde /dev
, der dasselbe Gerät bezeichnet, werden Sie es auf diese Weise nicht bemerken. In /proc/mounts
sind Binderücken nicht vom Original zu unterscheiden. Es kann mehr als eine Übereinstimmung geben, wenn ein Einhängepunkt einen anderen abschattet (dies ist ungewöhnlich).
In /proc/self
oder /proc/$pid
gibt es eine mounts
Datei pro Prozess , die die globale Datei nachahmt. Die Mount-Informationen können beispielsweise aufgrund von zwischen Prozessen variieren chroot
. Es gibt eine zusätzliche Datei mountinfo
mit einem anderen Format, die weitere 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 ein Gerät anhand der Nummer 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}'
udisks
Symlink (in / dev / disk / by-label / ...). Aber ich kann mit zu einem Geräteknoten auflösenreadlink -f
. Ich mag die/proc/mounts
Idee, ich denke, das könnte ein bisschen zuverlässiger sein als/etc/mtab
.mountinfo
. Rufen Siestat
an, um die Gerätenummern zu erhalten (siehe meine aktualisierte Antwort, ich habe vergessen, den Befehl früher einzuschließen).-d " "
Option fürcut
diesengrep
Befehl.findmnt
undlsblk
dedizierte Befehle, die die harte Arbeit (robuster) für Sie erledigenUnter Linux können Sie jetzt den
findmnt
Befehl vonutil-linux
(seit Version 2.18) verwenden:Oder
lsblk
(auch abutil-linux
2.19):Das ist auch nützlich, um das gesamte Dateisystem zu finden, das unter einem bestimmten Gerät (Festplatte oder Partition ...) eingehängt ist:
So rufen Sie nur den Mountpoint ab:
Oben
findmnt
wird mit einem Fehler-Exit-Status zurückgegeben, wenn das Gerät nicht gemountet istlsblk
.So:
quelle
Der
mount
Befehl ohne Argumente listet alle aktuell gemounteten Dateisysteme auf. Sie könnengrep
das für den Datenträger, den Sie möchten (oder vongrep
/etc/mtab
dem die Dateimount
die Informationen liest):quelle
grep ${NODE} /etc/mtab | cut -d ' ' -f 2
sollte es tun.grep ^"${NODE}[[:space:]]\+" /etc/mtab | cut -d ' ' -f 2"
viel weniger zerbrechlich ist ...Ja. Sie können für einige Anwendungsbeispiele sehen, dass nur interessante Einhängepunkte angezeigt werden / nicht interessante Typen gefiltert werden oder Verzeichnisse aufgelistet werden
/
, die sich nicht unter demselben Einhängepunkt befinden, aber es gibt auch einen kurzen Überblick unten. Der Befehl, nach dem Sie fragen, lautetfindmnt
(obwohl erlsblk
auch dienen könnte) :Nun ist, wie Sie sehen,
/dev/sda1
montiert/esp
. Ich frage mich, ob es auch woanders montiert ist?Aha. Aha. Ein Unterordner wird ebenfalls
--bind
über den Start geladen. Okay...Nichts. Was zum Teufel?
Ohhh ... Nun, das ist schön. Hmmm...
Oh ja, das ist wirklich schön.
Setzen wir nun sda1 wieder dahin, wo es hingehört, und versuchen es noch einmal ...
Aber wo habe ich diesen magischen Befehl gefunden?
quelle
Ich kenne keine saubere und einfache Methode, um festzustellen, ob ein Geräteknoten in
/dev
eingehängt ist oder nicht . Das kann ich aber bieten. Es behandelt direkt gemountete Geräte (/dev/sda1
) und von UUID (/dev/disk/by-uuid/aa4e7b08-6547-4b5a-85ad-094e9e1af74f
) gemountete Geräte . Es bricht ab, wenn Ihre Gerätenamen Leerzeichen enthalten.Die Funktion schreibt den Eintrag von
/proc/mounts
nach stdout, wenn er gefunden wird, und setzt den Exit-Status auf 0. Andernfalls ist der Exit-Status 1.quelle
Führen Sie einfach den folgenden Befehl aus:
quelle