.Fuse_hidden * dosyaları nasıl silinir?


34

Bazı Windows makinelerinde bazı klasörleri paylaşacak şekilde yapılandırılmış bir Samba sunucusunu çalıştıran küçük bir Linux sunucum (Debian Squeeze) var. Dizinlerden birini pencerelerden silmeye çalışırken "Klasör silinemiyor" hatası aldım.

Dizini Linux'un konsolundan silmeye çalıştım Benzer bir hatayı aldım:

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

Dizinin içeriğini listeledim ve .fuse_hidden adında bir dosya ve ardından onaltılık bir sayı buldum (000uboyac000000185).

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

.Fuse_hidden dosyasını silmeye çalıştım, ancak anında yeni bir dosya oluşturuldu (onaltılık sayı değişikliğine dikkat edin).

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

Ayrıca, Midnight Commander'ı kullanarak dosyayı başarılı bir şekilde silmek istemedim.

Şimdiye kadar bulduğum diğer çözümler GUI'yi içeriyor ve sadece konsolum var.

Herhangi bir öneriniz takdir edilmektedir.


3
Sigorta arka plan programı aktif görünüyor. Dosyayı silmeden önce durdurun.
ott--

Bu arada yorumumu değiştirdim.
ott--

Bu benim ilk düşüncemdi ama durdurmak için bir Sigorta servisi bulamadım, Samba'yı yeniden başlattım, sorun çözüldü, dosya gitti. Teşekkürler.
Lando

rm dir-name -rf?
Hauke ​​Lager

Yanıtlar:


52

Bu, NFS montajında ​​başka bir sistemin açık olduğu bir dosyayı sildiğinizde olanlara benzer. Sorun şu ki, dosya "link count" değeri> 1 iken dosya sisteminden kaldırılmış, diğer işlemler hala açık tutuyor.

  • Dosyanın fiziksel olarak bulunduğu sisteme giriş yapın. (ağ bağlantısı yok)
  • lsof dir-name/.fuse_hidden000bd8c100000185Hangi işlemlerin dosya tanıtıcısını açık tuttuğunu bulmak için yürütün .
  • İşlemi sonlandırmadan açık dosya tanıtıcısını "zarafetle" serbest bırakmak için hangi adımları uygulayabileceğinizi anlamak veya bu işlemleri yapmak mantıklıysa bu işlemleri sonlandırın.

Normalde, yerel dosya sisteminizde başka bir işlemin açık olduğu bir dosyayı sildiğinizde, işletim sistemi isteğinize uyar ve onu dizin ağacından kaldırır, ancak ağacın işaret ettiği inode hala işletim sistemi tarafından kullanılıyor sayılır. Bir dosya her açıldığında, "link sayısı" birer birer artar ve alan yalnızca bu link sayısı sıfıra geldiğinde gerçekten serbest bırakılır.

Bu nitelikte bir sorunla karşılaştığınızda, işletim sisteminin bu dosyayı dizin ağacından çıkarmamaya karar vermiş ne olursa olsun olduğu anlamına gelir : genellikle, hala erişemeyen şeyler tarafından erişilmesi gerektiğine inanmak için bir neden olduğu için doğrudan inode numarasını kullanır. Başlangıçta uyuyor gibi görünebilir, ancak ekranların arkasında, işletim sistemi onu gizli bir nokta ön ekine sahip olarak yeniden adlandırır, bu nedenle hala bir tür dosya sistemi yolu adreslemesiyle erişilebilir. Bağlantı sayısı sıfıra ulaştığında boşluk hala boş kalır, ancak bu nesne, bağlantılar gidene kadar dizinde kalır.


Ben hala dosyayı kullanarak bazı servis ile ilgisi olduğunu tahmin ettim (bu durumda Samba), lsof'u unutmuştum.
Lando

Beni soruna yönlendir. lsofHangi sürecin hala dosyayı okuduğunu belirlememe yardımcı oldu ve o zamana kadar her şeyi kaldırabildim!
ThanksForAllTheFish 19:14

Sorunum var, bu lsofve fuserbu dosya için herhangi bir işlem, herhangi bir öneri getirme?
mxmlnkn

0

Önerileriniz için teşekkürler, ama hiçbir şey benim için işe yaramadı. Ancak bir çözüm buldum: Dış SSD'yi pencereleri çalıştıran bir PC'ye taşıdım. Dosya Gezgini'ni kullanma ("Gizli öğeler" işaretli) ile .Trashesdizine gidip .fuser_hiddendosyayı silebildim .

Bu yardımcı olur umarım!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.