Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách Tìm Symlink Hỏng Trong Linux

Symbolic Link, hay symlink, là cách đơn giản hóa quản trị hệ thống Linux. Điều này khá phổ biến trên server hoặc workstation, nơi link thư mục này đến thư mục khác dùng để app gửi thông tin đến nơi khác trong directory tree mà không đổi config – essential cho maintaining healthy system. Tuy nhiên, vấn đề với symlink là không có guarantee bạn luôn có cả hai thư mục trong link đó. Ở đây chúng tôi chỉ cách tìm và fix broken symlink trong Linux.

Có một ứng dụng cực kỳ hữu ích gọi đơn giản là symlinks trong hầu hết repository. Đây là command-line utility đơn giản sẽ cho output hữu ích và option xóa broken symlink đó.

Để cài nó, dùng lệnh sau:

# For Debian/Ubuntu-based distro
sudo apt install symlinks
# For Fedora/CentOS
sudo dnf install symlinks

Có một vài option then chốt cho symlinks. Đó là -d, xóa dangling link, và -r, recursive làm option bạn chỉ định qua subdirectory.

Bạn cũng có thể dùng built-in find tool trong Linux. Đây là ví dụ less user-friendly, nhưng hữu ích để học find command và cách nó hoạt động.

Đầu tiên, tôi tạo symbolic link. Điều này liên quan đến lấy file hiện tại và dùng lệnh ln link nó đến file chưa tồn tại. Đó sẽ như ví dụ sau cho tôi.

touch test-file.txt
ln -s test-file.txt linked-file.txt

Bạn có thể thấy qua lệnh ls rằng link tồn tại.

Bây giờ, tôi làm hỏng symlink đó.

rm test-file.txt

Bạn thấy rằng dù tôi xóa file gốc, lệnh ls -l vẫn báo link. Đây là nơi vấn đề nảy sinh. Những file này có thể ở thư mục khác, làm cho việc check file gốc còn tồn tại khó hơn nhiều.

Cách fix broken symlink là xóa chúng. Không thể restore chúng, nên bạn chỉ phải clear chúng khỏi virtual directory tree.

Để report broken symlink với tool symlinks, dùng lệnh:

symlinks .

Lưu ý "." chỉ present working directory. Thay đổi cho thư mục bạn muốn search. Output có thể trông như:

dangling: /home/jperkins/linked-file.txt -> test-file.txt

Chỉ ra "linked-file.txt" dangling và symlink bị hỏng. Để xóa chúng, dùng:

symlinks -d .

Output trông giống lần trước nhưng cũng bao gồm dòng "deleted".

Để fix broken symlink với find, dùng lệnh:

find . -xtype l

Lưu ý lại "." representing present working directory. Điều này sản xuất output less user-friendly nhưng vẫn hữu ích.

Và để xóa, thêm option delete.

find . -xtype l -delete

Bạn không nhận output cho cái này, nhưng nếu chạy lại không -delete, bạn sẽ không tìm thấy gì.

Đó là xong. Bây giờ bạn dễ dàng tìm broken symlink và xóa chúng trước khi gây issue hơn. Có thêm tutorial về symlink bạn nên check. Bạn cũng có thể học thêm về khác biệt giữa symlink và hard link và khi nào nên dùng chúng.