Как найти и исправить неработающие символические ссылки в Linux
Хотите узнать больше об удалении неработающих символических ссылок в вашей системе? Может быть, кто-то сказал вам, что мертвые символические ссылки занимают место на вашем устройстве хранения, и теперь вы хотите избавиться от них навсегда.
К счастью, есть несколько утилит, которые вы можете загрузить на свой компьютер с Linux, чтобы управлять символическими ссылками. Эти инструменты также помогут вам найти неработающие программные ссылки и навсегда исправить их.
Здесь мы обсудим , как вы можете сообщить и исправить сломанные символические ссылки на вашей системе , используя символические ссылки и найти команду.
Что такое символические ссылки и как их создать?
Как правило, каждая компьютерная система имеет два типа ссылок – программные ссылки и жесткие ссылки. Жесткие ссылки – это записи каталога, которые связывают определенное имя с файлом, присутствующим в вашей системе. Это исходные файлы, которые хранятся по определенному адресу в вашем хранилище.
С другой стороны, программные ссылки – это текстовые строки, которые связывают два каталога или файла друг с другом. Ярлыки программ – отличный пример символических ссылок. Предположим, файл A имеет символьную ссылку на файл B. Это означает, что файл A будет хранить абсолютный или относительный путь к файлу B.
Чтобы создать символическую ссылку:
- Запустите терминал, нажав Ctrl + Alt + T на клавиатуре.
- Создайте новый текстовый файл с именем text.txt .
touch text.txt
- Свяжите другой текстовый файл ( another.txt ) с только что созданным файлом ( text.txt ).
ln -s text.txt another.txt
Вы только что связали два разных текстовых файла символической ссылкой. Команда ln – это способ создания символических ссылок по умолчанию в операционной системе на базе Linux. -S в вышеупомянутой команде означает символические ссылки.
Основная проблема с символическими ссылками заключается в том, что если вы удаляете или перемещаете целевой файл, символическая ссылка не удаляется автоматически. Вместо этого ссылка теперь указывает на файл, которого даже нет в вашей системе. Такие ссылки называются зависшими, неработающими, потерянными или мертвыми ссылками.
Найдите и исправьте неработающие символические ссылки
Во-первых, вам нужно подтвердить, что в системе существует символическая ссылка. Вы можете легко сделать это с помощью команд ll и grep .
ll | grep txt
Приведенная выше команда перечислит все символические ссылки, связанные с текстовыми файлами в вашем текущем рабочем каталоге.
Теперь, если бы мы разорвали созданную выше символическую ссылку, удалив родительский текстовый файл ( text.txt ):
rm text.txt
Символьная ссылка сломается и не будет удалена из вашей системы. Вы можете подтвердить это, набрав ll | grep txt снова в вашем терминале.
Хотя пара неработающих символических ссылок не причинит вреда вашему компьютеру, в кратчайшие сроки их может стать тысяча. Вот почему существует необходимость отслеживать оборванные ссылки в вашей системе.
Единственный способ исправить эти неработающие символические ссылки – удалить их. Ваша система содержит сотни оборванных ссылок, и ни у кого нет времени проверять наличие этих ссылок вручную. В таких случаях инструменты и команды Linux оказываются действительно полезными.
Использование символических ссылок
Symlinks – это мощная утилита, которая предоставляет вам все инструменты, необходимые для управления и исправления неработающих символических ссылок в вашей системе. Поскольку по умолчанию он не установлен в большинстве дистрибутивов Linux, вам придется установить его вручную.
Вы можете использовать Pacman для установки пакета в Arch Linux :
sudo pacman -S symlinks
В Fedora:
sudo dnf install symlinks
В CentOS:
sudo yum install symlinks
В дистрибутивах на основе Debian:
sudo apt-get install symlinks
Если вы используете Ubuntu, перед установкой пакета символических ссылок вам нужно будет добавить репозиторий юниверса в список репозиториев вашей системы.
sudo add-apt-repository universe
После того, как вы успешно установили символические ссылки, вам необходимо проверить наличие потерянных ссылок в вашей системе. Для этого введите:
symlinks .
Файл . (точка) указывает на текущий рабочий каталог. Если вы хотите сообщить о неработающих символических ссылках в каталоге / home , вы можете сделать это, набрав:
symlinks /home
Если в вашей системе присутствует неработающая ссылка, вы получите примерно такой результат.
dangling: /home/sharmadeepesh/another.txt -> test.txt
Чтобы быстро удалить указанную символическую ссылку, вы можете использовать флаг -d с командой по умолчанию.
symlinks -d .
Чтобы удалить оборванные символические ссылки в каталоге / home , введите:
symlinks -d /home
На этот раз вывод будет не только перечислять неработающие ссылки, но также сообщать, что ссылка теперь удалена.
dangling: /home/sharmadeepesh/another.txt -> test.txt
deleted: /home/sharmadeepesh/another.txt -> test.txt
Чтобы рекурсивно сообщать и удалять неработающие символические ссылки в данном каталоге, используйте флаг -dr с командой по умолчанию, где d означает удаление, а r означает рекурсивный.
symlinks -dr .
Использование команды поиска
Команда find предустановлена в каждой системе Linux. Как следует из названия, вы можете искать папки и файлы с помощью этой команды. Команда find также позволяет легко сообщать и удалять мертвые программные ссылки в вашей системе.
Чтобы перечислить неработающие символические ссылки в текущем рабочем каталоге, введите:
find . -xtype l
Чтобы найти неработающие ссылки в любом другом каталоге вашей системы, просто замените расширение . (точка) символ в пути к каталогу. Следующая команда будет искать неработающие ссылки в каталоге / home .
find /home -xtype l
Вы также можете перечислить неработающие символические ссылки, которые не используются вашей системой.
find . -xtype l ! -exec test -e {} ; -print
Чтобы проверить, куда указывают эти неработающие ссылки, используйте:
find . -xtype l -exec ls -l {} +
В зависимости от количества неработающих символических ссылок в вашей системе вы получите результат, который выглядит примерно так.
lrwxrwxrwx 1 root root 19 Feb 21 11:53 /home/sharmadeepesh/another.txt -> /home/sharmadeepesh/text.txt
Кроме того, вы можете удалить неработающие символические ссылки за один раз с помощью следующей команды.
sudo find . -xtype l -delete
Также есть альтернативный способ удалить мертвые ссылки:
sudo find . -xtype l ! -exec test -e {} ; -delete
Управление символическими ссылками в Linux
Символические ссылки важны для системы Linux, поскольку они упрощают процесс определения путей и управления на вашем компьютере. Но если о неработающих символических ссылках не позаботиться, они могут занять огромную часть памяти вашей системы, и вы даже не узнаете об этом. В таких ситуациях в игру вступают такие утилиты, как символические ссылки и find .
Если вы новичок и хотите улучшить свои знания в Linux, то время от времени изучать новые команды – это идеальный подход. Пользователи должны знать, какая команда им нужна для эффективного решения данной ситуации.