logo

Suletuxe.de
Linux - Nutzer
helfen
Linux - Nutzern

Willkommen, Gast. Bitte Login oder Registrieren.
28. März 2024, 17:54:37
Übersicht Hilfe Suche Login Registrieren

Amateurfunk Sulingen
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe  |  allgemeine Kategorie  |  Allgemeine Diskussionen  |  Thema: findtmnt - der bessere weg um Dateisysteme zu finden « zurück vorwärts »
Seiten: [1] nach unten Drucken
   Autor  Thema: findtmnt - der bessere weg um Dateisysteme zu finden  (Gelesen 676 mal)
Sebastian
Sr. Member
****

Offline

Einträge: 363





Profil anzeigen
findtmnt - der bessere weg um Dateisysteme zu finden
« am: 08. Januar 2023, 18:54:43 »

Viele alte Linux Hasen kennen den Befehl mount.

Dieser wird häufig nicht nur zum mounten von Dateisystemen verwendet, sondern auch oft, um eine Auflistung der momentan gemounteten Dateisysteme zu bekommen. Diese Auflistung wird dann auch häufig noch mit grep gefiltert. Dabei wissen bestimmt viele nicht, dass mount die Auflistung der gemounteten Dateisysteme nur aus Kompatibilitätsgründen noch auflistet:

MOUNT(8)
Zitat:
...
Listing the mounts
      The listing mode is maintained for backward compatibility only.

      For more robust and customizable output use findmnt(8), especially in your scripts. Note that control characters in the mountpoint name are replaced with
      '?'.
...


Diesen Job übernimmt heutzutage das viel besseres Tool, um Dateisysteme ausfindig zu machen findmnt.

Es listet zum einen die eingehängten Dateisysteme viel besser lesbar in einer Baumstruktur auf, und zum  anderen bietet es gleich Filter Funktionen um bestimmte Dateisysteme zu suchen gleich mit an, so das ein grep damit überflüssig wird.

Es folgen ein paar Beispiele. Zum besseren Verständnis verwende ich die langen Optionen, diese sind häufig auch nur Optional anzugeben die genaue Syntax entnimmt bitte dem Handbuch FINDMNT(8):

Zeigt die Gerätedatei an, dass unter / eingehängt ist:
Code:

$ findmnt --target /
TARGET SOURCE                FSTYPE OPTIONS
/      /dev/mapper/vg0-lvroot ext4  rw,noatime


Umgekehrt, unter welchem Verzeichnis das Dateisystem eingehängt wurde:

Code:

$ findmnt --source /dev/mapper/vg0-lvroot
TARGET SOURCE                FSTYPE OPTIONS
/      /dev/mapper/vg0-lvroot ext4  rw,noatime


Listet nur Read Only Dateisysteme auf:

Code:

$ findmnt --options ro
TARGET                                              SOURCE FSTYPE OPTIONS
/run/credentials/systemd-sysctl.service            none  ramfs  ro,nosuid,nodev,noexec,relatime,mode=700
/run/credentials/systemd-tmpfiles-setup-dev.service none  ramfs  ro,nosuid,nodev,noexec,relatime,mode=700
/run/credentials/systemd-tmpfiles-setup.service    none  ramfs  ro,nosuid,nodev,noexec,relatime,mode=700

Der Option --options kann auch eine Komma separierte Liste mitgegeben werden, um den Filter auszuweiten.

Code:

findmnt --options ro,noexec,mode=755 # etc.


Suche nach Dateisystemen eines bestimmten Typen:

Code:

$ findmnt --types ext4
TARGET  SOURCE                FSTYPE OPTIONS
/      /dev/mapper/vg0-lvroot ext4  rw,noatime
└─/home /dev/mapper/vg0-lvhome ext4  rw,noatime

Inventiert die Suche nach einem Dateisystem, Beispiel Listet alle auf bis auf swap Dateisysteme:

Code:

$ findmnt --types swap --invert

Listet die Einträge in der /etc/fstab auf.

Code:

$ findmnt --fstab
TARGET SOURCE                                    FSTYPE OPTIONS
/      UUID=333621d0-0a8b-4682-aa5a-9332316f7d0e ext4  defaults,noatime
/home  UUID=b0351c7c-e128-4287-8201-c227c12fd3d4 ext4  defaults,noatime
/tmp  tmpfs                                    tmpfs  defaults,noatime,mode=1777
none  /swapfile                                swap  defaults

Lösst alle Bezeichnungen wie UUIDs, Labels etc. zu ihren Gerätedateien auf. Lässt sich auch gut verwenden um seine fstab zu konvertieren.

Code:

$ findmnt --fstab --evaluate
TARGET SOURCE                FSTYPE OPTIONS
/      /dev/mapper/vg0-lvroot ext4  defaults,noatime
/home  /dev/mapper/vg0-lvhome ext4  defaults,noatime
/tmp  tmpfs                  tmpfs  defaults,noatime,mode=1777
none  /swapfile              swap  defaults

Sollen Abstände in der Tabelle nicht zu groß sein, z.B. um die Zeilen in einem Script besser verarbeiten zu können, kann man die Option --raw verwenden, dann werden die Felder mit nur einem Leerzeichen seperatisiert.

Und zu guter Letzt kommen wir zu den Optionen, die grep komplett überflüssig machen:

Code:

$ findmnt --type ext4 --noheadings --output SOURCE
/dev/mapper/vg0-lvroot
/dev/mapper/vg0-lvhome

Es war die rede von --noheadings und --output. Das zum einen die Überschriften entfernt und zum anderen nur angegebe Spalten/Felder anzeigt.


Und wenn das nicht schon gut genug ist um wahr zu sein, legt findmnt noch einen drauf. Es unterstützt nähmlich noch polling.

Ja genau, es kann die Datei /proc/self/mountinfo auf Veränderungen überwachen und sich zu Wort melden, wenn eine bestimmte Aktion eintritt:

Wartet bis ein Mount unter /mnt stattfindet, und gibt dann das Feld SOURCE aus
Code:

$ findmnt --target /mnt --poll=mount --output SOURCE --noheadings --first-only

In einem Skript so eingesetzt, sorgt es dafür, dass, dass Skript an der Stelle erst einmal nicht weiterläuft bis die Aktion stattgefunden hat. Auf diese weiße kann man sich eine Schleife in seinem Skript und Systemressourcen sparen.

findmnt kennt dabei verschiedene poll Aktionen


  • mount
  • unmount
  • remount
  • move


Zudem kann man mit


  • --first-only
  • --timeout X


Steuern wie lange die /proc/self/mountinfo überwacht werden soll.

Hoffe dem ein oder anderen, konnte ich mit diesem Tipp bzw. Ideen, seine Skripte ein wenig Optimieren.

LG
Sebastian
« Letzte Änderung: 08. Januar 2023, 19:02:32 von Sebastian » Gespeichert

Andreas
Administrator
*****

Offline

Einträge: 1135



Linux von Innen

Profil anzeigen
Re:findtmnt - der bessere weg um Dateisysteme zu finden
« Antwort #1 am: 09. Januar 2023, 07:30:26 »

... das wusste auch ich noch nicht - DANKE!

LG
Andreas
Gespeichert

Wissen ist das einzige Gut, das mehr wird, wenn man es teilt - wenn es Menschen gibt, die es weitergeben, und es Menschen gibt, die bereit sind, dieses Geschenk auch unter eigenem Einsatz anzunehmen.


Freiheit zu erkämpfen reicht nicht. Man muss sie auch verteidigen.
Seiten: [1] nach oben Drucken 
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe  |  allgemeine Kategorie  |  Allgemeine Diskussionen  |  Thema: findtmnt - der bessere weg um Dateisysteme zu finden « zurück vorwärts »
Gehe zu: 


Login mit Username, Passwort und Session Länge

 Es wird die Verwendung "Blink"-basierter Browser und mindestens 1024x768 Pixel Bildschirmauflösung
für die beste Darstellung empfohlen
 
freie Software für freie Menschen!
Powered by MySQL Powered by PHP Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2004, YaBB SE Dev Team. All Rights Reserved.
- modified by Andreas Richter (DF8OE)
Valid XHTML 1.0! Valid CSS!