rmdir gescheitert, weil "Device or resource busy"
gibt es eine Menge von ähnlichen problem wie "Device or resource busy". Aber ich denke mein problem ist anders mit Ihnen.
Benutze ich mount --bind zu bind ein Verzeichnis
mount --bind /tmp/origin /tmp/mount
wird und dann umount erfolgreich
umount /tmp/mount
Dann, wenn ich Anrufe rm auf einmal
rm -rf /tmp/mount
Konnte ich einen Fehler Device or resource busy
. Wenn ich warten Sie 2~3 Sekunden, und dann rufen Sie rm, könnte es Erfolg.
Also dieses Verhalten ist sehr merkwürdig hier. Ich versuche verwenden
lsof +D /tmp/mount
nichts sehen konnten.
Benutze ich auch fuser -vm /tmp/mount
, konnte nicht sehen, jeder Prozess, halten Sie diesen Ordner.
Vergleiche ich die /proc/mounts
vor umount /tmp/mount
und nach umount /tmp/mount
. /tmp/mount
bereits entfernt.
Vergleiche ich die stat /proc/mounts
vor umount /tmp/mount
und nach umount /tmp/mount
. Die inode auch anders, dies bedeutet /tmp/mount
bereits komplett entfernt.
Sogar rufe ich sync && echo 2 > /proc/sys/vm/drop_caches
und versuchen, löschen Cache-Dateien, die es immer noch nicht funktionieren.
Ich versuche dies in beide Ubuntu 14.04 und CentOS 6.6. Sie haben dieselben Ergebnisse.
Danke. Wie bewegen sich diese? @AnthonyGeoghegan
Kein problem. Wenn ich du wäre, würde ich kopieren und einfügen der Inhalt dieser Frage-in den neuen und lösche dann diese version zu vermeiden, die neue Frage gekennzeichnet wird als ein cross-post. Herzlich willkommen auf Stack Exchange!
Da die oben genannten Befehle sind happends in code, nicht von shell. Der Grund dieses problem bezieht sich auf diese Parameter, wenn der Anruf Klon-Prozess: CLONE_NEWNS. Also ich bleibe noch hier.
Ich danke Ihnen sehr. Es gehen.
InformationsquelleAutor haosdent | 2015-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stand ich vor problem wie dieses, weil ich mount gemeinsamen Ordner in der VM und ich möchte Sie entfernen Verzeichnis nach unmount und ich möchte nur zu teilen meine Lösung.
un-mount-Pfad
entfernen mout Pfad in /etc/fstab
Neustart
Verzeichnis entfernen
umount /path -l
Kräfte aushängenInformationsquelleAutor thyahan
In meiner Erfahrung, die folgenden Vorgänge sind asynchron auf Linux:
close()
gibt,umount()
zurückgeben kannEBUSY
während es führt asynchrone Version. Siehe Diskussion hier: Seite 1, Seite 2.Sehen
sync(8)
:Als für
/proc/sys/vm/drop_caches
finden Sie hier:So, sofort nach Ihrem Befehl können die Daten immer noch in der Warteschlange für schreib-und umounting ist noch nicht abgeschlossen.
Update
Jedoch, wenn asynchrone umounting in Aktion, kernel zurück
EBUSY
für Operationen auf mounted device, aber nicht für mount-Punkt.Also die Fälle oben konnte nicht der Grund sein für dein problem 😛
PS.
Eigentlich verstehe ich nicht, warum der Mann Seite besagt, dass
sync(8)
ist nicht synchron in Linux. Es fordertsync(2)
, die besagt:InformationsquelleAutor gavv
Danke für @g-v-Antwort. Aber ich fand das Ergebnis ist ein anderes problem. Wir verwenden CLONE_NEWNS-flag fork einen Prozess. Mehr details finden Sie in CLONE_NEWNS Flagge und SOFORT-3349 Device busy bug
In einem kurzen Wort, wir montieren im übergeordneten Prozess. Und dann umount im Kind-Prozess, weil der CLONE_NEWNS, den mount-Punkt existiert noch die behandelt, die von übergeordneten Prozess. Also wenn call rmdir würde, bekam Fehlercode EBUSY.
Zu vermeiden, die oben genannten Probleme, können wir die gemeinsamen Berg-oder slave-mount. Mehr details finden Sie in LWN 159092
InformationsquelleAutor haosdent
überprüfen
dann
InformationsquelleAutor user1766756