Как найти и исправить неработающие символические ссылки в Linux

Хотите узнать больше об удалении неработающих символических ссылок в вашей системе? Может быть, кто-то сказал вам, что мертвые символические ссылки занимают место на вашем устройстве хранения, и теперь вы хотите избавиться от них навсегда.

К счастью, есть несколько утилит, которые вы можете загрузить на свой компьютер с Linux, чтобы управлять символическими ссылками. Эти инструменты также помогут вам найти неработающие программные ссылки и навсегда исправить их.

Здесь мы обсудим , как вы можете сообщить и исправить сломанные символические ссылки на вашей системе , используя символические ссылки и найти команду.

Как правило, каждая компьютерная система имеет два типа ссылок – программные ссылки и жесткие ссылки. Жесткие ссылки – это записи каталога, которые связывают определенное имя с файлом, присутствующим в вашей системе. Это исходные файлы, которые хранятся по определенному адресу в вашем хранилище.

С другой стороны, программные ссылки – это текстовые строки, которые связывают два каталога или файла друг с другом. Ярлыки программ – отличный пример символических ссылок. Предположим, файл A имеет символьную ссылку на файл B. Это означает, что файл A будет хранить абсолютный или относительный путь к файлу B.

Связанный: Как создать символическую ссылку в Linux

Чтобы создать символическую ссылку:

  1. Запустите терминал, нажав Ctrl + Alt + T на клавиатуре.
  2. Создайте новый текстовый файл с именем text.txt .
     touch text.txt
  3. Свяжите другой текстовый файл ( another.txt ) с только что созданным файлом ( text.txt ).
     ln -s text.txt another.txt

Вы только что связали два разных текстовых файла символической ссылкой. Команда ln – это способ создания символических ссылок по умолчанию в операционной системе на базе Linux. -S в вышеупомянутой команде означает символические ссылки.

Связанный: Как использовать команду ls в Linux

Основная проблема с символическими ссылками заключается в том, что если вы удаляете или перемещаете целевой файл, символическая ссылка не удаляется автоматически. Вместо этого ссылка теперь указывает на файл, которого даже нет в вашей системе. Такие ссылки называются зависшими, неработающими, потерянными или мертвыми ссылками.

Во-первых, вам нужно подтвердить, что в системе существует символическая ссылка. Вы можете легко сделать это с помощью команд 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, поскольку они упрощают процесс определения путей и управления на вашем компьютере. Но если о неработающих символических ссылках не позаботиться, они могут занять огромную часть памяти вашей системы, и вы даже не узнаете об этом. В таких ситуациях в игру вступают такие утилиты, как символические ссылки и find .

Если вы новичок и хотите улучшить свои знания в Linux, то время от времени изучать новые команды – это идеальный подход. Пользователи должны знать, какая команда им нужна для эффективного решения данной ситуации.