Der Weg zu überprüfen ist fuser -vm /mnt/dir
, welche als root ausgeführt werden muss. Hier erfahren Sie, welche Prozesse auf den Mount-Punkt zugreifen.
Eine Alternative ist lsof /mnt/dir
, die jede geöffnete Datei auf dem Mount anzeigt. Wieder am besten als root ausführen.
Sie können einen dieser Prozesse als Nicht-Root ausführen, die Ausgabe ist jedoch auf Ihre Prozesse beschränkt. Die Prozesse anderer Benutzer werden nur stillschweigend nicht angezeigt, obwohl sie das Aufheben der Bereitstellung des Dateisystems verhindern.
Beispiel:
Watt:~# fuser -vm /mnt/Zia/src
USER PID ACCESS COMMAND
/mnt/Zia/src: root kernel mount /mnt/Zia/src
anthony 24909 ..c.. bash
anthony 25041 F.c.. gvim
Das Feld "Zugriff" informiert Sie darüber, wie darauf zugegriffen wird. In diesem Fall wird der Kernel als Mount verwendet. bash
hat es als aktuelles Arbeitsverzeichnis (muss cd
vor dem Unmounten in ein anderes Verzeichnis) und gvim hat sowohl das aktuelle Verzeichnis als auch eine geöffnete Datei (muss dieses gvim schließen).
Watt:~# lsof /mnt/Zia/src
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 24909 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony 6u REG 0,26 16384 3526219 /mnt/Zia/src/perl/.utf8.c.swp (zia.vpn.home:/home/anthony/src)
In dieser Ausgabe sehen Sie die aktuellen Verzeichnisse für bash und gvim (als Typ DIR
). Sie können auch sehen, welche Datei gvim zum Schreiben geöffnet hat.
So erzwingen Sie das Problem:
fuser
hat eine -k
Option, die ein Signal (Standard:) SIGKILL
an jeden Prozess sendet , der den Mount verwendet. Dies ist eine ziemlich gewaltsame Methode, um zu verhindern, dass das Reittier beschäftigt ist. (Und natürlich pass auf was du willst SIGKILL
!)
umount
hat die -l
Option, ein Lazy Unmount durchzuführen. Der Mount wird aus dem Dateisystem-Namespace entfernt (daher wird er /mnt/Zia/src
im Beispiel nicht mehr angezeigt), bleibt jedoch gemountet, sodass Programme, die darauf zugreifen, dies weiterhin tun können. Wenn das letzte Programm, das darauf zugreift, beendet wird, wird die Bereitstellung tatsächlich aufgehoben.
Es gibt eine letzte Ursache, die behoben werden kann, wenn das Aufheben der Bereitstellung fehlschlägt. Dies ist ein NFS-Server, der ausfällt. Hier können Sie verwenden umount -f
, aber Sie riskieren Datenverlust, wenn Sie dies tun. (Der Client hat möglicherweise Schreibvorgänge zwischengespeichert, die vom Server noch nicht bestätigt wurden, und diese werden verworfen. Apps wurde jedoch bereits mitgeteilt, dass der Schreibvorgang erfolgreich war.)