Cách xóa thư mục với Wikipedia Quá nhiều cấp độ liên kết tượng trưng


8

Tôi có một chút vấn đề kỳ lạ trên hệ thống RHEL.

Trên hệ thống của chúng tôi, chúng tôi có thư mục nhà của chúng tôi tự động theo /export/home. Có một vài trường hợp ngoại lệ, khi tôi đang thử nghiệm sử dụng ánh sáng cho các thư mục nhà của chúng tôi. Đây là tự động theo/gluster/home

Điều này hoạt động trên tất cả các máy chủ (30+) của chúng tôi. Hôm nay điều này đã ngừng làm việc trên một trong số họ. Tôi nhận được lỗi:

Too many levels of symlinks

khi cố gắng cdvào /gluster/home/$HOME...

Cuối cùng tôi đã chuyển /glusterđến /gluster_brokenvà tạo một /gluster/homeautofs mới , khởi động lại và mọi thứ hoạt động trở lại.

Bây giờ tôi muốn loại bỏ /gluster_broken.

Vấn đề là aparently có một số vòng lặp symlink trong /gluster_broken/home. Tôi không biết nó đến từ đâu. Cho đến nay, những nỗ lực của tôi để thoát khỏi nó đã không có kết quả.

[root@dc1-03 /]# rm -rf gluster_broken/
rm: cannot remove `gluster_broken/home': Too many levels of symbolic links
[root@dc1-03 /]# rm -rf /gluster_broken/
rm: cannot remove `/gluster_broken/home': Too many levels of symbolic links
[root@dc1-03 /]# rm -rf /gluster_broken/home/
rm: cannot remove `/gluster_broken/home/': Is a directory
[root@dc1-03 /]# rm -rf /gluster_broken/home
rm: cannot remove `/gluster_broken/home': Too many levels of symbolic links
[root@dc1-03 /]# rmdir /gluster_broken/home/
rmdir: failed to remove `/gluster_broken/home/': Device or resource busy
[root@dc1-03 /]# fuser -m /gluster_broken/home/
Cannot stat /gluster_broken/home/: Too many levels of symbolic links
Cannot stat /gluster_broken/home/: Too many levels of symbolic links
Cannot stat /gluster_broken/home/: Too many levels of symbolic links
[root@dc1-03 /]# ls -ld /gluster_broken/home/
ls: cannot access /gluster_broken/home/: Too many levels of symbolic links
[root@dc1-03 /]# ls -ld /gluster_broken/home
drwxr-xr-x. 2 root root 0 Jan 22 10:20 /gluster_broken/home
[root@dc1-03 /]# fuser -m /gluster_broken/home

Như bạn có thể thấy hầu hết các lệnh đều mang lại thông báo lỗi giống nhau. Tôi thực sự muốn thoát khỏi vấn đề này. Nhưng tôi có một chút mất mát ở đây. Bất kỳ đề xuất?

Đầu ra của các lệnh được đề xuất:

[root@dc1-03 /]# ls /gluster_broken/
home
[root@dc1-03 /]# ls /gluster_broken/home/
ls: cannot access /gluster_broken/home/: Too many levels of symbolic links
[root@dc1-03 /]# ls -hblF /gluster_broken /gluster_broken/home 
/gluster_broken:
total 0
drwxr-xr-x. 2 root root 0 Feb  4 12:00 home/
ls: cannot open directory /gluster_broken/home: Too many levels of symbolic links

Một chút đoán / hack, nhưng nếu bạn gắn một cái gì đó vào gluster_broken / home thì hãy thử rm -rf gluster_broken?
virtualxtc

Một câu hỏi rõ ràng, nhưng gluster_broken chứa gì? Bạn có thể đưa ra một danh sách?
Faheem Mitha

2
Làm thế nào được /gluster_broken/homegắn kết (như được thấy trong / Proc / mounts)?
Stéphane Chazelas

Bạn có thể hiển thị đầu ra củals -hblF /gluster_broken /gluster_broken/home
RSFalcon7

namei /gluster_broken/homenói gì
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


4

Hãy thử tìm.

find -L /gluster_broken -mindepth 10

để tìm các vòng lặp liên kết

sau đó không đệ quy rmtrên (các) tệp sai

find sẽ theo các liên kết và tìm thấy cùng một lỗi "quá nhiều cấp độ". Tôi sử dụng -mindepth để lọc bất cứ thứ gì sâu dưới 10 để tránh các tập tin / thư mục ok. Vâng, điều này không cho rằng bạn không có quá 10 sâu trong cây bình thường. Tất cả lệnh này đang cố gắng làm là tìm tệp bị lỗi.

-- biên tập

Tôi nghĩ rằng làm theo lệnh là tốt hơn,

find -L /gluster_broken >/dev/null

Đây là bài kiểm tra của tôi

$ find .
.
./dira
./dira/a
./dira/dirb
./dira/dirb/dirc
./dira/error
./dira/b
./dira/test
./dira/test/ab&<cd.file
./dira/test/magic?newlines
./dira/test/cleanup
$ find -L . >/dev/null
find: ‘./dira/a’: Too many levels of symbolic links
find: ‘./dira/error’: Too many levels of symbolic links
find: ‘./dira/b’: Too many levels of symbolic links
$ 

--- chỉnh sửa 2

Tôi nghĩ đề xuất của tôi (bình luận) để kiểm tra hệ thống tập tin có thể là tốt nhất, tôi vừa thấy câu trả lời này và tự hỏi liệu bạn có vấn đề tương tự không.


Tại sao điều này làm việc?
Anko

Rất tiếc, không có lỗi đánh máy -maxdepth 10. Tôi sẽ chỉnh sửa.
X Tian

1
Vấn đề của tôi là về bất cứ điều gì bằng cách nào đó cố gắng làm điều gì đó với / gluster_broken / home đều ném lỗi này "đến nhiều cấp độ liên kết tượng trưng". Lệnh "find" được đề xuất ở trên cũng gây ra lỗi này, vì vậy tôi không nhận được bất kỳ thông tin hữu ích nào từ nó.
Krist van Besien

Tôi nghĩ rằng / gluster_broken / home đang lặp lại với chính nó. Tuy nhiên, tôi muốn biết điều này đã xảy ra như thế nào và tôi có thể làm gì để khắc phục nó.
Krist van Besien

1
Sẽ rất thú vị để xem đầu ra của ls -l /gluster_broken.
X Tian

4

Có lẽ tôi sai, nhưng dường như không ai khác trả lời câu hỏi.

Vấn đề là bạn có /phần cuối của lệnh.

Thay vì

rm gluster/

chỉ cần chạy

rm gluster

Bằng cách đặt /ở cuối, bạn đang cố gắng đi vào thư mục, đó là một liên kết tròn, vì vậy nó không bao giờ tìm thấy đáy. Không có /, bạn chỉ cần loại bỏ các liên kết tượng trưng.


1

Gần đây tôi gặp vấn đề tương tự khi tạo một liên kết tượng trưng mà không cung cấp cho nó một thư mục tuyệt đối.

Điều này đã gây ra lỗi tương tự khi cố gắng đọc tệp ("Quá nhiều cấp độ liên kết tượng trưng"):

ln -s ./config ~/.config/terminator

Dường như vì liên kết tượng trưng cố gắng tự quay trở lại:

ls -l ~/.config/terminator
lrwxrwxrwx 1 zane zane 8 Dec 22 16:14 config -> ./config

Nhưng điều này đã làm việc:

ln -s /home/zane/config ~/.config/terminator/config

Hy vọng, điều này sẽ giúp ai đó trong tình huống tương tự.


Có, nhưng ở đây chúng ta thấy đối tượng symlink.
Kaz

0

Bạn không thể xóa / gluster_broken / home becouse / gluster_broken là một liên kết bị hỏng.

ls -l  /gluster_broken

bạn sẽ thấy nó là một liên kết Vì vậy, loại bỏ nó:

rm /gluster_broken
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.