sudo rm -rf trả về có thể xóa thư mục trên thư mục trống thuộc sở hữu của root


8

Tôi có một thư mục trên hệ thống Debian của tôi. Thư mục là:

root@debian:/3/20150626# stat 00
File: `00'
Size: 6             Blocks: 0          IO Block: 4096   directory
Device: fe00h/65024d    Inode: 4392587948  Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-06-25 20:00:00.086150791 -0400
Modify: 2015-07-07 12:39:04.174903234 -0400
Change: 2015-07-07 12:39:04.174903234 -0400
Birth: -

Thư mục trống:

root@debian:/3/20150626# ls -al 00
total 0
drwxr-xr-x 3 root root  6 Jul  7 12:39 .
drwxr-xr-x 3 root root 23 Jul  7 12:56 ..

Nhưng hệ thống của tôi không nghĩ vậy:

root@debian:/3/20150626# rm -rf 00
rm: cannot remove `00': Directory not empty

Tôi không biết tại sao điều này sẽ xảy ra và tôi không thể tìm cách tiến về phía trước. Bất cứ ai có thể cung cấp hỗ trợ?

Không có câu hỏi nào trước đây mà tôi có thể xác định được vấn đề cụ thể này. Nhưng, để giải quyết một số câu hỏi tôi đã thấy trên các bài đăng tương tự:

a.) Thư mục được tạo bởi một quy trình đang chạy, nó đã tạo ra nhiều thư mục trước đó và các thư mục này đã bị xóa nhiều lần trước đó. Điều này cụ thể bị mắc kẹt trong limbo.

b.) Không nên có bất cứ điều gì được ghi vào thư mục này ngay bây giờ. Tôi đã kiểm tra nhiều lần và ls -alđầu ra luôn trả về không có gì.

c.) Tôi đã kiểm tra lsof và không có gì mở cho thư mục này:

root@debian:/3/20150626# lsof 00
root@debian:/3/20150626# 

d.) rmkhông được đặt bí danh cho bất cứ điều gì khác. Nó khá gần với stock Debian ... không có gì đặc biệt được thực hiện với bất kỳ chương trình Bash cốt lõi nào rm, v.v.

e.) Đổi tên được cho phép nhưng vẫn không thể xóa:

root@debian:/3/20150626# mv 00 delete_me
root@debian:/3/20150626# ls -al
total 0
drwxr-xr-x 3 root root  30 Jul  7 13:45 .
drwxr-xr-x 7 root root 105 Jul  7 12:57 ..
drwxr-xr-x 3 root root   6 Jul  7 12:39 delete_me
root@debian:/3/20150626# rm -rf delete_me
rm: cannot remove `delete_me': Directory not empty
root@debian:/3/20150626# ls -al delete_me/
total 0
drwxr-xr-x 3 root root  6 Jul  7 12:39 .
drwxr-xr-x 3 root root 30 Jul  7 13:45 ..

** Lưu ý, sau đây gọi là "xóa_me" kể từ khi tôi đổi tên nó và tôi sẽ đi theo dòng chảy.

f.) Đây là thư mục duy nhất được trả về khi tôi chạy findtrên nó.

root@debian:/3/20150626# find / -type d -name delete_me
/3/20150626/delete_me
root@debian:/3/20150626# find delete_me
delete_me

g.) lsattr không hiển thị gì:

root@debian:/3/20150626# lsattr
---------------- ./delete_me

1
Có thể đổi tên thư mục?
Jenny D

2
Phần "Liên kết: 3" nhảy ra với tôi; có vẻ như bạn có thể có một thư mục con. "Tìm 00" trở về là gì?
Jeff Schaller

Đã cập nhật câu hỏi của tôi với câu trả lời cho bạn, @JennyD
harperville 7/07/2015

1
Bạn đã kiểm tra lsattrxem có thuộc tính đặc biệt nào được gán cho nó không?
Caja

2
Đối với tôi, ngày càng có nhiều khả năng rằng quy trình đang chạy này từ mục (a) đang được giữ trong thư mục con "xóa_me" trong một số thời trang. Bạn có thể dừng quá trình đang chạy này không, sau đó kiểm tra lại statđầu ra (và / hoặc thử lại rmdir)?
Jeff Schaller

Câu trả lời:


1

Tìm thấy câu trả lời. Có gì đó không ổn với liên kết, như @JeffSchaller đề xuất. Giải pháp là chạy xfs_check để thấy rằng các liên kết không chính xác, sau đó xfs_V ngoặc để sửa chúng.

  1. chạy mountđể xem tên thiết bị. Của tôi là/dev/mapper/vg3-lv3
  2. umount /3
  3. xfs_check /dev/mapper/vg3-lv3 Trả về như sau:

    link count mismatch for inode 4392587948 (name ?), nlink 3, counted 2

    link count mismatch for inode 12983188890 (name ?), nlink 1, counted 2

  4. xfs_repair /dev/mapper/vg3-lv3 chỉ ra rằng các liên kết đã được sửa chữa:

    resetting inode 4392587948 nlinks from 3 to 2

    resetting inode 12983188890 nlinks from 1 to 2

Hóa ra tôi có một inode khác được liên kết không chính xác.

Cảm ơn tất cả sự giúp đỡ nhưng bằng cách sử dụng ma thuật đen của xfs num ngoặc, vấn đề của tôi đã được giải quyết.


-1

Bạn đã cố gắng xác minh rằng các thuộc tính của thư mục / thư mục có thuộc tính " i " - không thể thay đổi được kích hoạt! Kiểm tra bằng lệnh lsattr để xác minh rằng thư mục / thư mục có thuộc tính " i " kích hoạt nếu bạn tắt nó với "*

chattr -i ' thư mục '

* "Với điều này, bạn có thể thực hiện nhiệm vụ bạn muốn.


1
Các -ithuộc tính trên một tập tin / thư mục không ngăn chặn nó hiển thị, tuy nhiên nơi nào bạn thấy rằng -ilà bộ? Sản lượng của OP nói ngược lại
kos
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.