Anstatt zu verwenden mount | grep
, würde ich gerne verwenden mount -l -t bind
, aber das funktioniert nicht und -t none
zeigt alle Reittiere.
quelle
Anstatt zu verwenden mount | grep
, würde ich gerne verwenden mount -l -t bind
, aber das funktioniert nicht und -t none
zeigt alle Reittiere.
Bindungsbereitstellungen sind weder ein Dateisystemtyp noch ein Parameter eines bereitgestellten Dateisystems. Sie sind Parameter einer Mount- Operation . Soweit mir bekannt ist, führen die folgenden Befehlsfolgen zu im Wesentlichen identischen Systemzuständen für den Kernel:
mount /dev/foo /mnt/one; mount --bind /mnt/one /mnt/two
mount /dev/foo /mnt/two; mount --bind /mnt/two /mnt/one
Die einzige Möglichkeit, sich daran zu erinnern, welche Mounts Bind-Mounts waren, ist das Protokoll der mount
Befehle, die in verbleiben /etc/mtab
. Ein Bind-Mount-Vorgang wird durch die bind
Mount- Option angezeigt (wodurch der Dateisystemtyp ignoriert wird). Es mount
gibt jedoch keine Option, nur Dateisysteme aufzulisten, die mit einem bestimmten Optionssatz gemountet sind. Daher müssen Sie Ihre eigene Filterung durchführen.
mount | grep -E '[,(]bind[,)]'
</etc/mtab awk '$4 ~ /(^|,)bind(,|$)/'
Beachten Sie, dass dies /etc/mtab
nur sinnvoll ist, wenn es sich um eine Textdatei handelt, die von verwaltet wird mount
. Einige Distributionen wurden stattdessen /etc/mtab
als symbolische Verknüpfung zu eingerichtet /proc/mounts
. /proc/mounts
ist größtenteils äquivalent zu /etc/mtab
, weist jedoch einige Unterschiede auf, von denen einer Bindungs-Mounts nicht verfolgt.
Eine Information, die vom Kernel beibehalten, aber nicht in angezeigt wird /proc/mounts
, ist, wenn ein Mount-Punkt nur einen Teil der Verzeichnisstruktur auf dem angehängten Dateisystem anzeigt. In der Praxis passiert dies meistens mit Bindemounts:
mount --bind /mnt/one/sub /mnt/partial
In /proc/mounts
haben die Einträge für /mnt/one
und /mnt/partial
dasselbe Gerät, denselben Dateisystemtyp und dieselben Optionen. Die Informationen, die /mnt/partial
nur den Teil des Dateisystems anzeigen, auf dem sich das Stammverzeichnis /sub
befindet, werden in den prozessbezogenen Mountpunktinformationen in angezeigt/proc/$pid/mountinfo
(Spalte 4) . Einträge dort sehen so aus:
12 34 56:78 / /mnt/one rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered
12 34 56:78 /sub /mnt/partial rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered
findmnt | fgrep [
wie hier erklärt tun .mount --version
zeichnen Siebind
Informationen auf/etc/mtab
? Ich verwende Version 2.20.1 und habe mir die neuesten Quellen angesehen. In keinem Fall sehe ich Bindungsinformationen, die irgendwo aufgezeichnet wurden, nach denen Sie suchen könntenbind
. Auf der anderen Seite listet das, was ich in meiner Antwort vorgeschlagen habe , Mount-Objekte auf, die sowohl mit--bind
als auch mit derbind
Option erstellt wurden .</etc/mtab awk …
ist POSIX-kompatibel (ich vergesse, ob es in Bourne unterstützt wird). Bitte überprüfen Sie Ihre Fakten. Ich kann bestätigen, dass/etc/mtab
es diebind
Option für ein Dateisystem gibt, das mitmount --bind /source /target
Debian stable gemountet wurde (mount von util-linux-ng 2.17.2).mount
und sehen/etc/mtab
. Sie verwenden Debian Stable mit der älteren Version von util-linux-ng. Ich verwende Debian-Tests, die eine neuere Version haben, die nicht mehr das gleiche/etc/mtab
Verhalten zu haben scheint. Vielleicht hat @rozcietrzewiacz deshalb nichtbind
in gesehen,/etc/mtab
ob seine Distribution auch eine neuere Version verwendet?findmnt
als Antwort posten . Dies funktioniert übrigens nur, wenn das Zielverzeichnis kein anderer Mount-Punkt ist. Versuchen Sie zum Beispielsudo mount --bind / foo && findmnt | grep foo
Vielleicht könnte dies den Trick machen:
Beispiel:
quelle
/
sich zum Beispiel um eine Bindung handelt, hat die Ausgabe kein[...]
.Der Kernel handhabt keine Bindungs-Reittiere, die sich von normalen Reittieren unterscheiden . Die unterscheiden sich nur darin, was beim Laufen passiert
mount
.Wenn Sie ein Dateisystem mounten (zB mit
mount -t ext4 /dev/sda1 /mnt
), führt der Kernel (etwas vereinfacht) drei Schritte aus:-t
oder verwenden, wird-t auto
mount
der Typ erraten und der erratene Typ dem Kernel bereitgestellt).nodev
Dies ist beispielsweise eine Option auf dem Mountpoint und nicht auf dem Dateisystem. Sie können einen Bind-Mount mitnodev
und einen ohne haben.)Wenn Sie ein Bind-Mount durchführen (z. B. mit
mount --bind /a /b
), geschieht Folgendes:(Ich werde überspringen
mount --move
, weil es für die Frage nicht relevant ist.)Dies ähnelt der Erstellung von Dateien unter Linux:
Wenn Sie einen festen Link erstellen, geschieht Folgendes:
Wie Sie sehen können, sind die erstellte Datei und der feste Link nicht zu unterscheiden:
Da Sie jedoch alle Hardlinks zu einer Datei durch Vergleichen der Inode-Nummern identifizieren können, können Sie alle Bereitstellungen zu einem Dateisystem durch Vergleichen der Major: Minor-Nummern von Bereitstellungen identifizieren.
Sie können dies mit
findmnt -o TARGET,MAJ:MIN
oder direkt über tun/proc/self/mountinfo
( weitere Informationen finden Sie in der Dokumentation zum Linux-Kernel ).Das folgende Python-Skript listet alle Bindungsbereitstellungen auf. Es wird davon ausgegangen, dass der älteste Einhängepunkt mit dem kürzesten relativen Pfad zum Stammverzeichnis des eingebundenen Dateisystems der ursprüngliche Einhängepunkt ist.
quelle
quelle
Dies ähnelt der anderen Antwort, vermeidet jedoch das Formatierungsproblem.
So zeigen Sie alle Submounts an:
So zeigen Sie alle Submounts von Dateisystemen des Typs ext4 an:
So zeigen Sie alle Reittiere ohne Submounts an:
So zeigen Sie alle Mounts von Dateisystemen des Typs ext4 mit Ausnahme von Submounts an:
Das "-n" entfernt die Überschriften und die "--list" entfernt die Zeilen des "tree" -Formats.
Auf Debian-Stretch getestet.
quelle