umount meldet target is busy? Irgendein Prozess hat das Dateisystem noch offen. So findest du ihn und hängst sauber aus.
Aufwand:
ca. 10 Min.
Voraussetzung:
sudo-Rechte, Terminal
Gilt für:
Linux mit util-linux
Das Symptom
Der Kopiervorgang ist längst fertig, alle Fenster sind geschlossen, und trotzdem
antwortet das System auf umount mit der lapidaren Auskunft, das Ziel sei
beschäftigt. Der USB-Stick lässt sich nicht auswerfen, die Netzfreigabe nicht
lösen, die Partition nicht freigeben – und der Rechner sagt kein Wort darüber,
wer da eigentlich noch dranhängt.
Die „Layer 8“-Wahrheit
Der Kernel ist an dieser Stelle bewusst wortkarg: Er weiß, dass das Dateisystem
benutzt wird, aber er hält keine Liste bereit, wer es benutzt. Und benutzt heißt
weniger, als die meisten denken. Es genügt eine einzige offene Datei, ein
Prozess, dessen Arbeitsverzeichnis dort liegt, oder eine Auslagerungsdatei in
Betrieb. Der mit Abstand häufigste Schuldige ist deshalb kein wildgewordener
Hintergrunddienst, sondern das Terminal, in dem man gerade steht: Wer erst mit
cd in den Einhängepunkt wechselt und dann von dort aus aushängen will, hält
das Dateisystem selbst fest und beschwert sich anschließend über den Rechner.
Danach folgen die üblichen Verdächtigen – ein Dateimanager mit offenem Ordner,
ein Editor mit ungespeicherter Datei, ein Backup-Programm mitten im Lauf. Die
Lösung ist deshalb selten Gewalt, sondern eine Frage: Wer hat noch auf?
fuser -vm beantwortet sie in einer Zeile. Erst wenn diese Antwort vorliegt,
ist die Entscheidung zwischen ordentlich schließen, gezielt beenden und lazy
unmount überhaupt eine Entscheidung – vorher ist sie geraten.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.
Das eigene Terminal aus dem Weg räumen
Der häufigste Fall zuerst: Die eigene Shell steht mit ihrem Arbeitsverzeichnis im eingehängten Dateisystem und blockiert es damit selbst. Erst herausgehen, dann noch einmal versuchen:
cd ~
sudo umount /mnt/daten
2.
Herausfinden, wer das Dateisystem festhält
fuser mit der Option -m nennt alle Prozesse, die auf Dateien des angegebenen Dateisystems zugreifen; -v zeigt sie in ps-Manier mit PID, Benutzer und Befehl. In der Spalte ACCESS steht, wie zugegriffen wird – etwa c für das Arbeitsverzeichnis, f für eine offene Datei:
sudo fuser -vm /mnt/daten
3.
Die gefundenen Programme regulär beenden
Der beste Weg ist der langweilige: das Programm, das die Datei offen hat, normal schließen. Ein Dateimanager, ein Editor, ein noch laufender Kopiervorgang oder ein Terminal mit offenem Verzeichnis – alle geben ihre Sperre freiwillig ab, sobald sie fertig sind. Danach den Aushängeversuch wiederholen:
sudo umount /mnt/daten
4.
Nur wenn nötig: Prozesse abschießen
Achtung, hier gehen ungespeicherte Daten verloren: fuser -k sendet den betroffenen Prozessen SIGKILL, sie haben also keine Gelegenheit mehr, etwas zu sichern. Die Option -i fragt vor jedem einzelnen Prozess nach, das ist die Variante, mit der man nicht aus Versehen die Arbeitssitzung mitnimmt:
sudo fuser -kim /mnt/daten
5.
Unerreichbare Netzfreigaben gesondert behandeln
Hängt ein NFS-Server nicht mehr, hilft kein Prozesssuchen: -f erzwingt das Aushängen im Fall eines unerreichbaren NFS-Systems. Das Handbuch weist ausdrücklich darauf hin, dass auch das nicht garantiert, dass der Befehl nicht hängen bleibt, und empfiehlt absolute Pfade ohne symbolische Verknüpfungen:
sudo umount -f /mnt/nfs
6.
Letzte Reihe: lazy unmount
Der lazy unmount löst das Dateisystem sofort aus der Verzeichnisstruktur und räumt die Verweise auf, sobald es nicht mehr benutzt wird. Bei Netzfreigaben oder Dateisystemen mit untergeordneten Einhängepunkten ist danach laut Handbuch ein Neustart einzuplanen, ein erneutes Einhängen ist nicht mehr möglich:
sudo umount -l /mnt/daten
7.
Kontrollieren, dass wirklich nichts mehr eingehängt ist
findmnt zeigt den aktuellen Stand der Einhängepunkte. Taucht der Pfad dort nicht mehr auf, ist das Dateisystem gelöst und der Datenträger darf abgezogen werden:
findmnt /mnt/daten
Häufige Fragen (FAQ)
?Was genau bedeutet target is busy?
Dass das Dateisystem noch benutzt wird. Laut Handbuch lässt sich ein Dateisystem nicht aushängen, solange darauf Dateien geöffnet sind, ein Prozess sein Arbeitsverzeichnis dort hat oder eine Auslagerungsdatei darauf in Benutzung ist. Der Kernel weiß nicht, welches Programm gemeint ist – er weiß nur, dass jemand noch dranhängt, und verweigert deshalb das Aushängen. Das ist keine Zickerei, sondern der Schutz davor, einem laufenden Programm den Boden unter den Füßen wegzuziehen.
?Warum bin ich selbst schuld, obwohl kein Programm läuft?
Weil das Arbeitsverzeichnis zählt. Wer mit cd in das eingehängte Verzeichnis gewechselt ist und von dort aus umount aufruft, blockiert sich selbst – die eigene Shell ist der Prozess, der das Dateisystem benutzt. Das Handbuch nennt sogar den Fall, dass umount sich selbst im Weg stehen kann. Ein simples cd in das eigene Heimatverzeichnis löst überraschend viele dieser Fälle, noch bevor man anfängt, Prozesse zu suchen.
?Ist umount -l nicht die einfachste Lösung?
Einfach ja, sauber nein. Der lazy unmount hängt das Dateisystem sofort aus der Verzeichnisstruktur aus und räumt die Verweise erst auf, sobald niemand mehr zugreift. Offene Schreibvorgänge laufen dabei weiter, nur eben unsichtbar. Das Handbuch selbst empfiehlt die Option vor allem, um beim Herunterfahren Hänger durch unerreichbare Netzfreigaben zu vermeiden, und weist darauf hin, dass bei Netzfreigaben und bei Dateisystemen mit untergeordneten Einhängepunkten anschließend ein Neustart einzuplanen ist – ein erneutes Einhängen der Freigabe ist danach nicht mehr möglich. Als Standardgriff für den USB-Stick ist das die falsche Wahl.
Belege
Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.