Frage Wie lösche ich .fuse_hidden * Dateien?


Ich habe einen kleinen Linux-Server (Debian Squeeze), der einen Samba-Server ausführt, der konfiguriert ist, einige Ordner mit einigen Windows-Rechnern zu teilen. Beim Versuch, eines der Verzeichnisse aus Windows zu löschen, habe ich den Fehler "Ordner kann nicht gelöscht werden" erhalten.

Ich habe versucht, das Verzeichnis von der Konsole des Linux zu löschen Ich habe einen ähnlichen Fehler:

# rm dir-name -rf
rm: cannot remove `dir-name': Directory not empty

Ich habe den Inhalt des Verzeichnisses aufgelistet und eine Datei namens .fuse_hidden gefolgt von einer Hexadezimalzahl (000bd8c100000185) gefunden.

# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000185

Ich habe versucht, die Datei .fuse_hidden zu löschen, aber es wurde sofort eine neue Datei erstellt (beachten Sie die Änderung der Hex-Nummer).

# rm dir-name/.fuse_hidden000bd8c100000185
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000186

Ich habe auch versucht, mit Midnight Commander die Datei ohne Erfolg zu löschen.

Andere Lösungen, die ich bisher gefunden habe, betreffen GUI und ich habe nur eine Konsole.

Irgendwelche Vorschläge werden geschätzt.


28
2018-02-13 21:36


Ursprung


Der Fuse-Daemon scheint aktiv zu sein. Stoppen Sie es, bevor Sie die Datei löschen. - ott--
Ich habe meinen Kommentar in der Zwischenzeit geändert. - ott--
Das war mein erster Gedanke, aber ich konnte keinen Fuse-Dienst finden, den ich stoppen konnte. Ich habe stattdessen Samba neu gestartet, das Problem ist gelöst, die Datei ist weg. Vielen Dank. - Lando
rm dir-name -rf? - Hauke Laging


Antworten:


Dies ist ähnlich wie beim Löschen einer Datei, die ein anderes System auf einem NFS-Mount geöffnet hat. Das Problem ist, dass die Datei aus dem Dateisystem entfernt wurde, während ihre "Linkanzahl"> 1 war, was bedeutet, dass andere Prozesse sie weiterhin offen halten.

  • Melden Sie sich bei dem System an, auf dem sich die Datei physisch befindet. (keine Netzwerkhalterung)
  • Ausführen lsof dir-name/.fuse_hidden000bd8c100000185 um herauszufinden, welche Prozesse das Datei-Handle offen halten.
  • Beenden Sie diese Prozesse, wenn es sinnvoll ist, oder ermitteln Sie, welche Schritte Sie ausführen können, um das geöffnete Dateihandle "ordnungsgemäß" freizugeben, ohne den Prozess zu beenden.

Wenn Sie eine Datei in Ihrem lokalen Dateisystem löschen, die ein anderer Prozess geöffnet hat, entspricht das Betriebssystem normalerweise Ihrer Anforderung und entfernt sie aus der Verzeichnisstruktur. Der Inode, auf den die Baumstruktur verweist, wird jedoch weiterhin vom Betriebssystem verwendet. Jedes Mal, wenn eine Datei geöffnet wird, erhöht sich deren "Linkanzahl" um eins, und der Speicherplatz wird nur dann wirklich freigegeben, wenn die Anzahl der Links null erreicht.

Wenn Sie auf ein Problem dieser Art stoßen, bedeutet dies, dass das Betriebssystem aus irgendeinem Grund entschieden hat nicht entferne diese Datei aus der Verzeichnisstruktur: normalerweise, weil sie Grund zu der Annahme hat, dass sie immer noch auf Dinge zugreifen muss, die die direkte Inode-Nummer nicht nutzen können. Es scheint zunächst so zu sein, aber hinter den Kulissen benennt das Betriebssystem es mit einem versteckten Punkt-Präfix um, so dass es immer noch mit irgendeiner Art von Dateisystem-Adressierung zugänglich ist. Der Speicherplatz wird weiterhin freigegeben, wenn die Anzahl der Verknüpfungen null erreicht, aber das Objekt bleibt so lange im Verzeichnis, bis die Verknüpfungen nicht mehr vorhanden sind.


44
2018-02-14 01:16



Ich vermutete, dass es mit einem Dienst zu tun hatte, der immer noch die Datei verwendete (in diesem Fall Samba), ich hatte Lsof vergessen. - Lando
Führe mich zu dem Problem. lsofhalf mir zu erkennen, welcher Prozess noch die Datei gelesen hat und ich konnte dann alles entfernen! - ThanksForAllTheFish
Ich habe das Problem, dass lsof und fuser führe keine Prozesse für diese Datei auf, irgendwelche Vorschläge? - mxmlnkn


Ich hatte das gleiche Problem. Es wurde von einem Python-Programm zur Verwaltung von Fotos verursacht. Nach dem Beenden der Dateien ".fuse ..." verschwand sofort.


-3
2017-12-30 09:52



Diese Antwort erklärt wirklich nicht, was passiert ist. Und es ist zu vage, um für irgendjemand anderen nützlich zu sein, der das Problem erlebt. - kasperd