Saya memiliki server Linux kecil (Debian Squeeze) yang menjalankan server Samba yang dikonfigurasi untuk berbagi beberapa folder dengan beberapa mesin windows. Saat mencoba untuk menghapus salah satu direktori dari windows saya menerima kesalahan "Tidak dapat menghapus folder".
Saya mencoba menghapus direktori dari konsol linux. Saya mendapat kesalahan yang sama:
# rm dir-name -rf
rm: cannot remove `dir-name': Directory not empty
Saya mendaftar isi direktori dan menemukan file bernama .fuse_hidden diikuti oleh nomor hex (000bd8c100000185).
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000185
Saya mencoba menghapus file .fuse_hidden, tetapi file baru dibuat secara instan (perhatikan perubahan nomor hex).
# rm dir-name/.fuse_hidden000bd8c100000185
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .fuse_hidden000bd8c100000186
Saya juga mencoba menggunakan Midnight Commander untuk menghapus file tanpa hasil.
Solusi lain yang saya temukan sejauh ini melibatkan GUI dan saya hanya punya konsol.
Ada saran yang dihargai.
rm dir-name -rf
?Jawaban:
Ini mirip dengan apa yang terjadi ketika Anda menghapus file yang sistem lain buka pada NFS mount. Masalahnya adalah bahwa file telah dihapus dari sistem file sementara "jumlah tautan" -nya> 1, yang berarti bahwa proses lain masih menahannya terbuka.
lsof dir-name/.fuse_hidden000bd8c100000185
untuk mencari tahu proses apa yang menahan pegangan file terbuka.Biasanya, ketika Anda menghapus file di sistem file lokal Anda yang proses lain telah terbuka, OS mematuhi permintaan Anda dan menghapusnya dari pohon direktori, tetapi inode yang menunjuk pohon masih dianggap digunakan oleh sistem operasi. Setiap kali file dibuka, "jumlah tautan" -nya bertambah satu, dan ruang hanya benar-benar dirilis ketika tautan itu mencapai nol.
Ketika Anda mengalami masalah seperti ini, itu berarti bahwa OS memiliki alasan apa pun memutuskan untuk tidak menghapus file itu dari pohon direktori: biasanya karena ia memiliki alasan untuk percaya bahwa itu masih perlu diakses oleh hal-hal yang tidak dapat menggunakan nomor inode langsung. Ini mungkin awalnya tampak sesuai, tetapi di balik layar OS mengubah nama itu untuk memiliki awalan titik tersembunyi sehingga masih dapat diakses dengan beberapa bentuk pengalamatan jalur sistem file. Ruang masih akan dibebaskan ketika jumlah tautan mencapai nol, tetapi objek itu akan tetap berada di direktori hingga tautan hilang.
sumber
lsof
membantu saya mengidentifikasi proses mana yang masih membaca file dan saya pada saat itu dapat menghapus semuanya!lsof
danfuser
tidak memunculkan proses untuk file itu, ada saran?Terima kasih atas sarannya, tetapi tidak ada yang berhasil untuk saya. Tetapi saya menemukan solusinya: Saya memindahkan SSD eksternal ke PC yang menjalankan windows. Menggunakan File Explorer (dengan "Item tersembunyi" dicentang) saya menavigasi ke
.Trashes
direktori dapat menghapus.fuser_hidden
file.Semoga ini membantu!
sumber