Wie erhalte ich die vollständige und genaue Liste der gemounteten Dateisysteme unter Linux?

150

Normalerweise mountprüfe ich mit, welche Dateisysteme gemountet sind. Ich weiß auch, dass es einen Zusammenhang zwischen mountund gibt, /etc/mtababer ich bin mir nicht sicher, was die Details angeht. Nachdem ich gelesen habe, wie man überprüft, ob / proc / gemountet ist, bin ich verwirrter.

Meine Frage ist: Wie bekomme ich die genaueste Liste der gemounteten Dateisysteme? Sollte ich nur mountden Inhalt von /etc/mtaboder den Inhalt von verwenden oder lesen /proc/mounts? Was würde das zuverlässigste Ergebnis liefern?

Xanpeng
quelle
3
Sie sollten auch die akzeptierte Antwort auf diese Frage lesen: unix.stackexchange.com/questions/12040/…
nozimica
Ich kann nicht anders, als eine Verknüpfung zu Was ist / etc / mtab in Linux? weil es Nicht-Linux-Details abdeckt, die keine der Antworten hier geben.
Weijun Zhou

Antworten:

141

Die endgültige Liste der gemounteten Dateisysteme befindet sich in /proc/mounts.

Wenn sich auf Ihrem System Container in irgendeiner Form befinden, werden /proc/mountsnur die Dateisysteme aufgelistet, die sich in Ihrem aktuellen Container befinden. Zum Beispiel in einer chroot , /proc/mountslistet nur die Dateisysteme , deren Bereitstellungspunkt innerhalb des chroot. ( Es gibt Möglichkeiten, der Chroot zu entkommen. )

Es gibt auch eine Liste der gemounteten Dateisysteme in /etc/mtab. Diese Liste wird mit den Befehlen mountund verwaltet umount. Das heißt, wenn Sie diese Befehle nicht verwenden (was ziemlich selten vorkommt), wird Ihre Aktion (Aktivieren oder Deaktivieren) nicht aufgezeichnet. In der Praxis ist es meistens in einer Chroot, dass Sie /etc/mtabDateien finden , die sich stark vom Zustand des Systems unterscheiden. In der Chroot ausgeführte Reittiere spiegeln sich auch in der Chroot wider, /etc/mtabjedoch nicht in der Haupttierliste /etc/mtab. Aktionen, die /etc/mtabin einem schreibgeschützten Dateisystem ausgeführt werden, werden dort ebenfalls nicht aufgezeichnet.

Der Grund, warum Sie manchmal lieber /etc/mtaboder zusätzlich zu konsultieren möchten, /proc/mountsist, dass es manchmal in der Lage ist, Informationen auf eine Art und Weise darzustellen, die einfacher zu verstehen ist, da es Zugriff auf die Mount-Befehlszeile hat. Beispielsweise werden die angeforderten Mount-Optionen angezeigt (wobei auch die /proc/mountsStandardeinstellungen des mountKernels und des Kernels aufgelistet werden ), und Bindungs-Mounts werden als solche in angezeigt /etc/mtab.

Gilles
quelle
1
Was nützt es zu mountpflegen, /etc/mtabwenn man sich nicht darauf verlassen kann? Wäre es nicht besser, wenn stattdessen mountInformationen von präsentiert würden /proc/mounts?
Piotr Dobrogost
2
@PiotrDobrogost /etc/mtabkann Informationen aufzeichnen, die der Kernel nicht verfolgt, z. B. die ursprünglich angeforderten Optionen, und Bereitstellungen binden, die als solche angezeigt werden, anstatt als doppelte Einträge für Geräte angezeigt zu werden. Nichtsdestotrotz tendieren viele Distributionen dazu, /etc/mtabeinen Symlink zu erstellen /proc/mounts.
Gilles
3
Nichtsdestotrotz tendieren viele Distributionen dazu, /etc/mtabeinen Symlink zu erstellen /proc/mounts. Gut zu hören - wenn Sie diese Informationen zur Beantwortung hinzufügen, wird dies noch besser. Halten Sie die Verfolgung der vom Kernel angeforderten Optionen für machbar und vorteilhaft?
Piotr Dobrogost
2
Beachten Sie, dass Sie den Inhalt von / proc / mounts entfliehen müssen. Wie auf der Seite getmntent (3) beschrieben, müssen Leerzeichen (\ 040), Tabulator (\ 011), Zeilenumbruch (\ 012) und Backslash (\ 134) speziell behandelt werden. Insbesondere wenn Benutzermounts aktiviert sind, müssen Sie beim Arbeiten mit diesen Pfaden sehr vorsichtig sein.
Eric
2
Weitere Antworten zur Verwendung von Befehlen finden Sie unter "Weitere Antworten zur Verwendung von Befehlen". findmntDies ist seit 2010 der bevorzugte und wahrscheinlich in naher Zukunft der einzig sichere Weg, wenn Mount-Namespaces häufig vorkommen.
Marki555
68

Ab Version 2.18 (Juli 2010) steht util-linux ein Tool zur Verfügung, mit dem Sie eine Liste der aktuell bereitgestellten Dateisysteme anzeigen können:

findmnt

Sie können von der Standardbaumansicht zur Listenansicht mit wechseln -l, Ausgabespalten definieren mit -o(ähnlich wie lsblk), Ergebnisse nach Dateisystemtyp filtern mit -tetc ...

findmnt -lo source, target, fstype, label, options, used -t ext4
SOURCE    TARGET      FSTYPE LABEL OPTIONS                           USED
/dev/sda1 /           ext4   ARCH  rw,noatime,discard,data=ordered  17.6G
/dev/sdb2 /media/DATA ext4   DATA  rw,noatime,discard,data=ordered    44M

Für weitere Informationen lesen Sie die manSeite (und findmnt --helpum die Liste der verfügbaren Spalten zu erhalten)

don_crissti
quelle
33

Vielleicht, weil es 5 Jahre her ist, dass diese Frage beantwortet wurde, haben sich die Dinge geändert. Das cat /proc/mountserzeugt eine Menge Informationen, die Sie nicht interessieren. Heute, meiner Meinung nach, ist dies die ultimative Lösung.

df -h --output=source,target

Wenn Sie die Manpages lesen, gibt es viele Möglichkeiten, die Sie tun können, aber das ist, was Sie tun. Um beispielsweise die Ergebnisse noch weiter zu bereinigen, können Sie mit diesem Befehl Dateitypen von "tmpfs" ausschließen:

df -hx tmpfs --output=source,target

df Funktioniert auf Dateisystemebene und nicht auf Dateiebene.

Die obigen Befehle enthalten auch Netzwerk-Mounts.

Um ein bisschen mehr Informationen zu sehen, benutze dies:

df -hT

HINWEIS Bei langsam gemounteten Netzwerkverbindungen kann dies einige Minuten dauern!

Wenn Sie nicht über gemountete Netzwerkverbindungen verfügen (und über Root-Berechtigungen verfügen), ist dies sogar noch besser:

sudo lsblk -f
Rick
quelle
Sie müssen nicht als Root angemeldet sein, aber einige Felder / Spalten (z. B. Label) enthalten Nulldaten. Dies ist möglicherweise immer noch in Ordnung, da die Fragen wissen sollen, welche Dateisysteme angehängt sind.
Rick
Ubuntu. Allerdings habe ich gerade "findmnt" entdeckt, das kein root verwendet und netzwerkfähige Dateisysteme auflistet. Ich überlegte, meine Antwort zu überarbeiten, um dieses Wissen einzubeziehen.
Rick
:-) Ich bin müde, deine Antwort abzustimmen, kann es aber nicht, bis ich eine Wiederholung von 15+ habe
Rick
1
Übrigens, wenn Sie versuchen, --outputetwas wie Ubuntu 12 zu verwenden, das diese Optionen nicht akzeptiert, lesen Sie die findmntAntwort von don_crissti .
Mat Schaffer
findmntscheint höhere Fähigkeiten zu benötigen (getestet mit root; root hat alle Fähigkeiten), um Beschriftungen anzuzeigen.
Strg-Alt-Delor
23

Meistens mountist dies die bequemste Methode. Um eine vollständige und genaue Liste der aktuell gemounteten Dateisysteme zu erhalten, sollten Sie den Inhalt von /proc/mounts(z cat /proc/mounts. B. mit ) lesen .

Wenn zum Beispiel das Mounten von /Readwrite fehlgeschlagen ist und es dann nur als Fallback gemountet wurde /etc/mtab(woraus der mountBefehl liest, um Ihnen mitzuteilen, was gemountet ist, und auf was geschrieben wird - wenn dies möglich ist -, wenn es das Mounten ändert), wird es nicht aktualisiert zu reflektieren, dass /(was enthält /etc/mtab) derzeit schreibgeschützt gemountet ist. In dieser Situation wird beim Ausführen mountnormalerweise (falsch) angegeben, dass /Readwrite aktiviert wurde.

Enthält unter normalen Bedingungen (dh wenn das Dateisystem, in das es sich befindet, beschrieben werden kann) /etc/mtabeine Liste der aktuell gemounteten Dateisysteme. Dies ist nicht zu verwechseln mit /etc/fstabeiner Liste von Dateisystemen, die beim Systemstart automatisch eingehängt werden sollen.

Wenn das /procvirtuelle Dateisystem selbst nicht gemountet ist, können Sie natürlich auch keine der darin enthaltenen virtuellen Dateien lesen /proc/mounts. Dies ist sehr selten der Fall. In dieser Situation mountist es wahrscheinlich die beste Option, um zu sehen, was montiert ist.

Eliah Kagan
quelle