Làm cách nào để xóa các tập tin .fuse_hidden *?


34

Tôi có máy chủ Linux nhỏ (Debian Squeeze) chạy máy chủ Samba được cấu hình để chia sẻ một số thư mục với một số máy Windows. Trong khi cố gắng xóa một trong các thư mục khỏi windows, tôi đã nhận được lỗi "Không thể xóa thư mục".

Tôi đã cố xóa thư mục khỏi bảng điều khiển của linux Tôi gặp một lỗi tương tự:

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

Tôi đã liệt kê nội dung của thư mục và tìm thấy một tệp có tên .fuse_hidden theo sau là số hex (000bd8c100000185).

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

Tôi đã cố xóa tệp .fuse_hidden, nhưng một tệp mới đã được tạo ngay lập tức (lưu ý thay đổi số hex).

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

Tôi cũng đã thử sử dụng Midnight Commander để xóa tệp không thành công.

Các giải pháp khác tôi đã tìm thấy cho đến nay liên quan đến GUI và tôi chỉ có giao diện điều khiển.

Bất kỳ đề xuất đều được đánh giá cao.


3
Các daemon cầu chì dường như đang hoạt động. Dừng lại trước khi xóa tập tin.
ott--

Tôi đã thay đổi nhận xét của tôi trong khi đó.
ott--

Đó là suy nghĩ đầu tiên của tôi nhưng tôi không thể tìm thấy dịch vụ Fuse dừng lại, thay vào đó tôi đã khởi động lại Samba, vấn đề được giải quyết, tập tin đã biến mất. Cảm ơn.
Lando

rm dir-name -rf?
Hauke ​​Laging

Câu trả lời:


52

Điều này tương tự với những gì xảy ra khi bạn xóa một tệp mà hệ thống khác đã mở trên ngàm NFS. Vấn đề là tệp đã bị xóa khỏi hệ thống tệp trong khi "số lượng liên kết" của nó là> 1, có nghĩa là các quy trình khác vẫn đang giữ nó mở.

  • Đăng nhập vào hệ thống nơi tập tin vật lý cư trú. (không có kết nối mạng)
  • Thực thi lsof dir-name/.fuse_hidden000bd8c100000185để tìm hiểu những quy trình đang giữ tập tin xử lý mở.
  • Chấm dứt các quy trình đó nếu nó hợp lý hoặc tìm ra các bước bạn có thể thực hiện để "duyên dáng" giải phóng xử lý tệp đang mở mà không kết thúc quy trình.

Thông thường, khi bạn xóa một tệp trên hệ thống tệp cục bộ của mình mà một tiến trình khác đã mở, HĐH sẽ tuân thủ yêu cầu của bạn và xóa nó khỏi cây thư mục, nhưng inode mà cây chỉ đến vẫn được hệ điều hành xem xét sử dụng. Mỗi khi một tệp được mở, "số lượng liên kết" của nó tăng lên một và không gian chỉ thực sự được giải phóng khi số lượng liên kết đó bằng không.

Khi bạn gặp phải một vấn đề thuộc về bản chất này, điều đó có nghĩa là HĐH vì bất kỳ lý do gì đã quyết định không xóa tệp đó khỏi cây thư mục: thường là vì nó có lý do để tin rằng nó vẫn cần được truy cập bởi những thứ không thể truy cập được sử dụng số inode trực tiếp. Ban đầu nó có vẻ tuân thủ, nhưng đằng sau hậu trường, HĐH đổi tên nó thành một tiền tố dấu chấm ẩn để vẫn có thể truy cập được với một số dạng địa chỉ đường dẫn hệ thống tệp. Không gian sẽ vẫn được giải phóng khi số lượng liên kết bằng 0, nhưng đối tượng đó sẽ vẫn ở trong thư mục cho đến khi các liên kết không còn nữa.


Tôi đoán nó phải làm với một số dịch vụ vẫn sử dụng tệp (trong trường hợp này là Samba), tôi đã quên mất lsof.
Lando

Dẫn tôi đến vấn đề. lsofđã giúp tôi xác định quá trình nào vẫn đang đọc tệp và sau đó tôi có thể xóa mọi thứ!
ThanksFor ALLTheFish

Tôi có một vấn đề, đó là lsoffuserkhông đưa ra bất kỳ quy trình nào cho tập tin đó, có đề xuất nào không?
mxmlnkn

0

Cảm ơn những lời đề nghị, nhưng không có gì làm việc cho tôi. Nhưng tôi đã tìm thấy một giải pháp: Tôi đã chuyển SSD ngoài sang PC chạy windows. Sử dụng File Explorer (đã kiểm tra "Mục ẩn") Tôi đã điều hướng đến .Trashesthư mục có thể xóa .fuser_hiddentệp.

Hi vọng điêu nay co ich!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.