GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich überprüfen, ob ein Volume dort gemountet ist, wo es Python verwenden soll?

Lösung 1:

Ich würde einen Blick auf os.path.ismount() werfen .

Lösung 2:

Für eine endgültige Antwort auf etwas, das nur der Kernel sicher weiß, fragen Sie den Kernel:

cat /proc/mounts

Diese Datei kann mit beliebigen Tools gelesen / analysiert werden, als wäre es eine normale Datei. Einschließlich Python. Quick-n-Dirty-Beispiel:

#!/usr/bin/python

d = {}

for l in file('/proc/mounts'):
    if l[0] == '/':
        l = l.split()
        d[l[0]] = l[1]

import pprint

pprint.pprint(d)

Lösung 3:

Der einfachste Weg zur Überprüfung ist der Aufruf von mount über subprocess und schau ob es dort auftaucht. Verwenden Sie für zusätzliches Guthaben os.readlink() zum Inhalt von /dev/disk/by-* herauszufinden, um welches Gerät es sich handelt.

Lösung 4:

Bonusantwort. Wenn das externe Gerät nicht gemountet ist, werden die Daten in die Root-Partition unter Pfad /external-backup geschrieben . Wenn ein externes Gerät gemountet wird, sind die Daten auf der Root-Partition immer noch vorhanden, aber sie sind nicht erreichbar, weil /external-backup zeigt jetzt auf externes Gerät.

Lösung 5:

Alte Frage, aber ich dachte, ich würde trotzdem meine Lösung (basierend auf der Antwort von Dennis Williamson und Ignacio Vazquez-Abrams) beitragen. Da ich es in einer Nicht-Linux-Umgebung verwende, um Remote-Verzeichnisse zu überprüfen, die gemountet werden, /proc und mtab kann nicht verwendet werden und es wurden keine zusätzlichen Prüfungen implementiert:

def is_mounted(special, directory):
    search_prefix = '{} on {}'.format(special, directory.rstrip('/'))

    if os.path.ismount(directory):
        mounts = subprocess.check_output(['mount']).split('\n')

        for line in mounts:
            if line[:len(search_prefix)] == search_prefix:
                return True;

    return False

Verbesserungen willkommen!


Linux
  1. So erstellen Sie ein physisches Volume unter Linux mit LVM

  2. Wie überprüfe ich, ob eine Partition als „noexec“ gemountet ist?

  3. Wie überprüfe ich, ob Bash Farben drucken kann?

  4. Wie kann ich Verzeichnisse von grep -R ausschließen?

  5. Wie kann ich feststellen, ob eine Partition gemountet oder nicht gemountet ist?

So überprüfen Sie die Python-Version in Linux, Mac und Windows

So überprüfen Sie die Python-Version

So erstellen Sie einen S3-Bucket mit Python Boto3 auf AWS

So verwalten Sie Python-Pakete mit PIP

So ändern Sie die Größe von Bildern mit Python

Wie überprüfe ich, ob ich KDE oder Gnome verwende?