Come eliminare i file .fuse_hidden *?


34

Ho un piccolo server Linux (Debian Squeeze) che esegue un server Samba che è configurato per condividere alcune cartelle con alcune macchine Windows. Durante il tentativo di eliminare una delle directory da Windows ho ricevuto l'errore "Impossibile eliminare la cartella".

Ho provato a eliminare la directory dalla console di Linux Ho riscontrato un errore simile:

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

Ho elencato il contenuto della directory e ho trovato un file chiamato .fuse_hidden seguito da un numero esadecimale (000bd8c100000185).

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

Ho provato a eliminare il file .fuse_hidden, ma è stato creato immediatamente un nuovo file (notare la modifica del numero esadecimale).

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

Ho anche provato a utilizzare Midnight Commander per eliminare il file senza successo.

Altre soluzioni che ho trovato finora riguardano la GUI e ho solo console.

Eventuali suggerimenti sono apprezzati.


3
Il demone miccia sembra essere attivo. Interrompilo prima di eliminare il file.
ott--

Nel frattempo ho cambiato il mio commento.
ott--

Questo è stato il mio primo pensiero ma non sono riuscito a trovare un servizio Fuse da interrompere, ho riavviato Samba, risolto il problema, il file è sparito. Grazie.
Lando,

rm dir-name -rf?
Hauke ​​Laging,

Risposte:


52

Questo è simile a quello che succede quando si elimina un file che un altro sistema ha aperto su un mount NFS. Il problema è che il file è stato rimosso dal filesystem mentre il suo "numero di collegamenti" era> 1, il che significa che altri processi lo tengono ancora aperto.

  • Accedi al sistema in cui risiede fisicamente il file. (nessun montaggio in rete)
  • Eseguire lsof dir-name/.fuse_hidden000bd8c100000185per scoprire quali processi tengono aperto l'handle del file.
  • Terminare questi processi se ha senso o capire quali passaggi è possibile eseguire per rilasciare "con grazia" l'handle di file aperto senza interrompere il processo.

Normalmente, quando si elimina un file sul file system locale aperto da un altro processo, il sistema operativo soddisfa la richiesta e lo rimuove dall'albero della directory, ma l'inode a cui punta l'albero viene ancora considerato in uso dal sistema operativo. Ogni volta che viene aperto un file, il suo "conteggio dei collegamenti" aumenta di uno e lo spazio viene realmente rilasciato solo quando il conteggio dei collegamenti raggiunge lo zero.

Quando si verifica un problema di questo tipo, significa che il sistema operativo ha deciso, per qualsiasi motivo, di non rimuovere quel file dall'albero della directory: di solito perché ha motivo di credere che debba ancora accedere a cose che non possono utilizzare il numero di inode diretto. Inizialmente potrebbe sembrare conforme, ma dietro le quinte il sistema operativo lo rinomina per avere un punto-prefisso nascosto in modo che sia ancora accessibile con una qualche forma di indirizzamento del percorso del file system. Lo spazio verrà comunque liberato quando il conteggio dei collegamenti raggiunge lo zero, ma quell'oggetto rimarrà nella directory fino a quando i collegamenti non saranno spariti.


Immaginavo che avesse a che fare con qualche servizio che utilizzava ancora il file (in questo caso Samba), mi ero dimenticato di lsof.
Lando,

Portami al problema. lsofmi ha aiutato a identificare quale processo stava ancora leggendo il file e sono stato in grado di rimuovere tutto!
ThanksForAllTheFish,

Ho il problema, quello lsofe fusernon faccio apparire alcun processo per quel file, qualche suggerimento?
mxmlnkn,

0

Grazie per i suggerimenti, ma niente ha funzionato per me. Ma ho trovato una soluzione: ho spostato l'SSD esterno su un PC con Windows. Usando Esplora file (con "Elementi nascosti" selezionati) ho navigato nella .Trashesdirectory è stato in grado di eliminare il .fuser_hiddenfile.

Spero che sia di aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.