
Ein umount, der „Ziel ist beschäftigt“ antwortet, tritt oft nach einer einfachen Maßnahme auf: Ein Dienst muss gestoppt werden, ein USB-Laufwerk muss entfernt werden oder ein Backup-Volume muss ausgehängt werden. Der Kernel verweigert, weil ein Prozess noch dieses Dateisystem verwendet.
fuser ermöglicht es, diesen Prozess zu identifizieren, bevor etwas getötet wird. An einem gültigen Einhängepunkt listet der Befehl die PID auf, die sein Dateisystem verwendet.
Den Einhängepunkt vor fuser bestätigen
Arbeiten Sie aus einem anderen Verzeichnis als dem zu aushängenden Volume. Eine Shell, die sich im /mnt/archives befindet, reicht aus, um diesen Einhängepunkt besetzt zu halten.
Beginnen Sie, indem Sie findmnt fragen, welches Dateisystem tatsächlich den Pfad trägt. Dieser Schritt vermeidet es, fuser auf einen einfachen Ordner im Wurzelverzeichnis / auszuführen.
cd /
findmnt -T /mnt/archives -o TARGET,SOURCE,FSTYPE,OPTIONS
Die Spalte TARGET sollte den Punkt angeben, der ausgehängt werden soll, beispielsweise /mnt/archives. Wenn die Ausgabe / zurückgibt, ist der Pfad kein separates Volume. Fahren Sie nicht fort mit einem Befehl, der darauf abzielt, eine Festplatte auszuhängen.
Überprüfen Sie vor einer Aktion auf einem Server auch die Rolle des Volumes. Ein aktives Backup, eine Datenbank oder ein Container können darauf schreiben, selbst wenn kein Terminal geöffnet ist.
- Halten Sie eine SSH- oder Konsolensitzung, die nicht vom Volume abhängt.
- Notieren Sie den erwarteten Dienst, den Einhängepunkt und das Zeitfenster für die Intervention.
- Überprüfen Sie mit
findmnt, dass der Ordner dem erwarteten Einhängepunkt entspricht.
Der Leitfaden findmnt unter Linux hilft dabei, die Quelle und den Typ des Dateisystems vor einer Festplattenintervention zu überprüfen.
Prozesse lesen, die das Volume offen halten
Verwenden Sie den genauen Einhängepunkt mit -m. Die Option -M fügt einen Schutz hinzu: fuser verweigert den Befehl, wenn das Argument kein echter Einhängepunkt ist.
sudo fuser -vmM /mnt/archives
Die Ausgabe kann den Benutzernamen, eine PID, den Zugriffstyp und den Befehl enthalten. Ein Prozess, der mit Zugriff auf das aktuelle Verzeichnis angezeigt wird, weist oft auf ein Terminal hin, das im Volume verbleibt. Ein Dienstprozess sollte mit seiner systemd-Einheit oder Anwendung verbunden sein, bevor Maßnahmen ergriffen werden.
Das Ergebnis sagt nicht automatisch, welcher Prozess legitim ist. Ein Backup-Agent kann aktiv sein, während ein vergessenes Skript vom selben Volume läuft. Die Entscheidung hängt vom zu diesem Zeitpunkt erwarteten Dienst ab.
Um eine bestimmte PID zu überprüfen, vervollständigen Sie mit ps und sehen Sie sich seine systemd-Einheit an, wenn der Prozess von einem Dienst abhängt:
ps -fp 2481
sudo systemctl status backup.service
Ersetzen Sie 2481 und backup.service durch die beobachteten Werte. Für Dateien, Sockets und Ports, die mit einem Prozess verbunden sind, vervollständigt der Artikel über lsof dieses Diagnosetool gut.
Den richtigen Dienst vor umount stoppen
Wenn Sie eine systemd-Einheit identifiziert haben, stoppen Sie sie ordnungsgemäß. Diese Methode gibt dem Dienst Zeit, seine Dateien zu schließen und seinen Endzustand zu schreiben.
sudo systemctl stop backup.service
sudo fuser -vmM /mnt/archives
sudo umount /mnt/archives
Der zweite Befehl fuser sollte den Prozess des gestoppten Dienstes nicht mehr anzeigen. Wenn eine andere PID weiterhin vorhanden ist, analysieren Sie diese ebenfalls, anstatt umount in einer Schleife erneut auszuführen.
fuser -k existiert, ist aber keine automatische Antwort auf ein belegtes Volume. Diese Option sendet ein Signal an die gefundenen Prozesse und kann ein Backup, einen Geschäftsprozess oder ein Shell eines anderen Administrators unterbrechen. Ich würde die geordnete Anwendungsschließung wählen, solange die Einheit oder das Skript identifizierbar ist. Eine Maschine, die während eines kontrollierten Stopps blockiert ist, bleibt der Fall, in dem eine direktere Maßnahme erörtert werden kann, mit einer Konsole und einem Vorfallverfahren.
Überprüfen, dass das Volume tatsächlich verschwunden ist
Ein stiller umount zeigt nur an, dass der Befehl keinen Fehler zurückgegeben hat. Überprüfen Sie den Pfad mit findmnt und kontrollieren Sie die letzten Kernel-Nachrichten, falls das Gerät entfernbar ist.
findmnt -T /mnt/archives
journalctl -k -n 20 --no-pager
Nach einem erfolgreichen Aushang kann findmnt -T /mnt/archives weiterhin das Wurzeldateisystem für den leeren Ordner anzeigen, es sollte jedoch nicht mehr die alte Quellen von Volume an diesem Einhängepunkt anzeigen. Warten Sie auch bei einem USB-Laufwerk, bis die Schreibvorgänge abgeschlossen sind, bevor Sie es abziehen.
Verweisverhalten: fuser-Handbuch von psmisc.