Home / Linux / umount: device is busy – Fehler beim unmounten eines Laufwerks
terminal-icon

umount: device is busy – Fehler beim unmounten eines Laufwerks

Der Befehl umount hängt, wie der Name schon sagt, externe Laufwerke, Festplatten oder CDs aus dem Linux System aus. Dabei kommt es des öfteren zu der Fehlermeldung umount: device is busy. Hier die Lösung wie das Laufwerk sauber ausgeworfen werden kann

Wie man der Fehlermeldung entnehmen kann, ist das Laufwerk noch beschäftigt und kann somit nicht ausgeworfen werden. Der Grund ist meistens dass Programme oder Dienste auf darauf befindliche Dateien zugreifen. Ich beschreibe hier einen Lösungsansatz in zwei Varianten.

In vielen Fällen ist man einfach nur selbst gerade in dem Verzeichnis, welches man auswerfen möchte. Dazu sollte meistens ein „cd“ reichen um in ein anderes Verzeichnis zu wechseln.

The QUICK AND DIRTY Way – einfach aushängen (mit Vorsicht zu genießen)

Warum schreibe ich einen Lösungsansatz der mit Vorsicht zu genießen ist? Nunja wenn es sich zB. um einen Netzwerk Share (NFS) handelt und das Netzwerk ist plötzlich unterbrochen, ist es teils sehr schwierig alle Connections sauber zu trennen.

Hierfür gibt es das Flag -l (Beispiel mit sda7):

[bash]umount -l /dev/sda7[/bash]

Das Laufwerk wird einfach ausgehängt, ohne Rücksicht auf Verluste. Geöffnete Dateien werden nicht gespeichert und bestehende Verbindungen getrennt. Programme laufen daher teilweise weiter und werfen Errors. Deshalb ist Variante zwei auch der bessere und vorallem sichere Weg:

[sam id=“2″ codes=“true“]

Der schönere Weg – zugreifendes Programm herausfinden und sauber beenden

Diese Variante ist definitiv der bessere Weg. Einfach herausfinden welche geöffneten Programme auf das entsprechende Laufwerk zugreifen und diese Beenden oder killen.

Welche Programme greifen auf das auszuwerfende Laufwerk zu?

Der Befehl lsof listet die Programme auf welche auf die Laufwerk (sda7) zugreifen:

[bash]lsof /dev/sda7

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
BackupPC_ 16967 backuppc cwd DIR 8,7 4096 292554494 /backup/backuppc/trash[/bash]

Alternativ kann auch der Befehl fuser verwendet werden:

[bash]fuser -m /dev/sda7

/dev/sda7: 16967c[/bash]

Die Ausgabe zeigt nun die entsprechende(n) PID(s) an welche auf des Laufwerk zugreifen. Diese gilt es nun zu beenden. Hierbei ist es von Vorteil wenn man seinen Server und die entsprechenden Dienste oder die Programme kennt und es sauber beendet. Im meinem Fall ist es das Programm BackupPC und ich kann es mit „/etc/init.d/backuppc stop“ beenden.

Wenn man das Programm nicht kennt kann man es alternativ auch „killen“. Hierbei sollte man aber wieder beachten dass keine Rücksicht auf geöffnete Dateien genommen wird und es zu Datenverlust kommen kann.

[bash]kill 16967[/bash]

Nun kann das Laufwerk wie gewohnt ausgeworfen werden:

[bash]umount /dev/sda7[/bash]
4.1/5 - (20 votes)

Auch cool

Linux richtig anwenden: Tipps und Tricks für eine optimale Erfahrung

Die Kombination aus Spiele-Plattformen, und dem Betriebssystem Linux mag auf den ersten Blick ungewöhnlich erscheinen. …

11 Kommentare

  1. Einer der häufigsten Fälle für das „device busy“ tritt dann auf, wenn man sich mit der Shell noch im gemounteten Verzeichnis befindet, z.B. in /mnt.

    Ein simples…
    cd
    (oder irgendein anderer Befehl, der einen weg von /mnt führt)

    …reicht dann schon aus, damit umount funktioniert

    • Da muss ich dir allerdings zu 100% recht geben – werde das gleich noch Ergänzen 😉

      Danke
      Gruß
      Patrick

    • Oh ja, das passiert mir regelmäßig. Allerdings meist mit Krusader der den betreffenden Mountpoint offen hat und der auf einem anderen virtuellen Desktop liegt (bei mir werden nur die offenen Programme des jeweiligen Desktops angezeigt). Der Versuch zu entmounten findet dann natürlich auf einem anderen virtuellen Desktop statt. 😀

  2. Eigentliche ist es doch gar keine wirkliche Fehlermeldung, mehr eine Statusmeldung. 😉

  3. Weil ich es nicht mag, Daten zu verlieren oder Anwendungen zu killen, ist mein erster Versuch immer ein „sync“ in der Konsole. Das schließt alle Schreibvorgänge ab. Oft kann man danach das Laufwerk ohne Probleme aushängen.

  4. Das kann ich verstehen!

  5. Hi!

    Mal eine Frage wenn man also so alles aufgelistet hat:

    fuser -m /dev/sda7

    /dev/sda7: 16967c

    und jetzt versucht zu beenden, braucht man bei dem Befehl

    kill 16967

    das letzte „c“ nicht mit eintragen? Kann mir jemand sagen wofür das c steht, sorry falls die Frage blöd ist würde mich aber interessieren.

    lg

    • Hallo Max,

      Ja das c kannst du weglassen.

      Der Buchstabe am Ende ist ein Flag welches für die Art des Zugriffs steht. Das „c“ steht für current directory.
      Folgende Werte kann die Ausgabe laut man beinhalten:
      c current directory
      e executable being run.
      f open file. f is omitted in default display mode.
      F open file for writing. F is omitted in default display mode.
      r root directory.
      m mmap’ed file or shared library.

      Gruß
      Patrick

  6. Witzig ist natürlich, wenn das Prozesse-Killen zur Vorbereitung des umount-Befehls unter anderem auch diese Seite schließt, da dabei der Browser-Prozess beendet wird 🙂