Символічні посилання на Linux є фантастичною особливістю, але вони можуть бути розбиті і ліворуч, вказуючи ні в нічого. Ось як знайти розбиті символічні посилання, перегляньте їх, і видалити їх з вашої системи, якщо вам потрібно.
Символічні посилання 101
Символічні посилання , також називається "М'які посилання" та "Symlinks", - це форма ярликів, які можуть вказувати на файли та каталоги. Символ виглядає так само, як звичайний файл або каталог у вікні менеджера файлів. Він також відображається як запис у списку файлів у вікні терміналу. Файл або каталог, до якого точки Symlink можуть бути будь-де у дереві файлової системи.
Наприклад, скажімо, у вас є Symlink у вашому домашньому каталозі під назвою "Dave-Link", що вказує на файл під назвою "text-file.txt", розташований десь у дереві файлової системи. Команди, які ви використовуєте на SYMLINK, автоматично застосовуються до файлу, до якого він вказує. Якщо ви спробуєте використовувати
кішка
або
менш
На Symlink ви дійсно побачите вміст файлу "text-file.txt".
Стандартна установка Linux містить багато Symlinks. Навіть якщо ви не створюєте себе, операційна система використовує їх. Програми встановлення програми часто використовують Symlinks, щоб вказати файли виконуваних файлів. Коли програмне забезпечення оновлено, бінарний файл замінюється новою версією, і всі символічні посилання продовжують працювати раніше, якщо назва нового файлу така ж, як стара.
Ми можемо легко побачити деякі Symlinks за допомогою
ls
У кореневому каталозі. Деякі записи відображаються в іншому кольорі нашого
Ubuntu 20.10
Тестова машина, вони відображаються в світло-блакитному кольорі.
Ми вводимо наступне:
LS /
Ми можемо зробити більш глибокий погляд, використовуючи
-L
(довгий список). Ми вводимо наступну команду, щоб подивитися на всі записи "Lib" та єдиного запису "BIN":
LS -L / Lib * / bin
На початку кожного рядка є "l,", яка вказує, що елемент є симпотичною компанією. Текст після "- & gt;" показує, що Symlink вказує. У нашому прикладі цілі є всі каталоги.
Дозволи перераховані як читання, пишуть та виконуємо для власника, групи та інших. Це за умовчанням підроблених записів. Вони не відображають фактичних дозволів на об'єктах, на яких точка Symlinks. Це дозволи на цільовому файлі або каталозі, які мають перевагу та шановані файловою системою.
Розбиті симпики
Symlink зламана (або залишається вилученням), коли файл, на якому його точки видаляється або переміщується в інше місце. Якщо процедура видалення програми не працює належним чином, або переривається, перш ніж завершиться, ви можете залишити порушеними симпатіями.
Якщо хтось вручну видаляє файл, не знаючи, що посилання на це, ці символи більше не працюватимуть. Вони будуть як дорожні знаки, що вказують на місто, яке було бульдоз.
Ми можемо легко побачити цю поведінку, використовуючи Symlink під назвою "Привіт" у поточному каталозі. Ми вводимо наступне, використовуючи
ls
щоб побачити його:
LS -L
Це вказує на програму "HTG" у каталозі, що називається "bin". Якщо ми "запустити" Symlink, він виконує програму для нас:
./ hello
Тепер ми можемо перевірити, чи це те, що відбувається, за кермом програми безпосередньо:
../ bin / htg
Як і очікувалося, ми отримуємо таку ж відповідь. Давайте видалити файл програми:
RM ../bin/htg
Тепер, коли ми дивимося на Symlink, ми бачимо, що він перерахований червоним, тому що Linux знає, що він зламаний. Він також розповідає нам про те, що він використовувався, тому ми можемо замінити файл, перекомпілюйте програму або робити все, що потрібно для відновлення Symlink.
Зверніть увагу, що якщо ми спробуємо запустити Symlink, помилка ми отримуємо посилання на ім'я Симлінка, а не назва програми, до якої точку Symlink.
Ми вводимо наступне:
./ hello
Пошук розбитих Symlinks
Більшість сучасних версій
знаходження
мати
xtype
варіант (розширений тип),
що спрощує пошук розбитих Symlinks
. Ми будемо використовувати
л
прапор з
xtype
, щоб розповісти про пошук посилань. За допомогою
знаходження
і
xtype
Як випливає, без жодного іншого
тип
Прапори, сили
xtype
Щоб повернути розбиті посилання:
Знайти. -xtype l
Запуск команди в нашому тестовому домашньому каталозі знаходить досить небагато зламаних символів. Зауважте, що пошук за замовчуванням рекурсивний, тому він автоматично шукає всі підкаталоги.
"Привіт" Symlink Ми розбиваємось з метою, наведено, як ми очікували. Одна з інших симплів, пов'язана з браузером Firefox, а решта пов'язані з зніманням.
Якщо ми пропускаємо вихід через
туалет
з
-L
(Лінії) варіант, ми можемо розраховувати лінії, що таке ж, як підрахунок зламаних симпатій.
Ми вводимо наступне:
Знайти. -xtype l | wc -l
Ми поінформували, що ми маємо 24 порушені симпики, що вказують ні на що.
Знайти, перегляньте, а потім видалити
Перш ніж поспішати і видалити всі зламані симпсики, перегляньте результати
знаходження
Команда. Подивіться, чи є в наявності дійсної причини будь-якої з порушених Symlinks.
Іноді симпінка може бути проблемою, а не цільовим файлом. Якщо Symlink була створена неправильно, це може нічого не вказувати, але справжня ціль присутня. Повторне створення Symlink буде виправленням у цьому випадку.
Також можливо, що, мабуть, зламана симпійка використовується як щось інше, наприклад, індикатор блокування файлів або іншого індикатора GO / NO. Firefox робить це; Ось що є перша симпотизація у нашому списку. Однак Firefox не використовується на нашій тестовій машині, тому це безпечно для нас, щоб видалити його.
Також можлива ціль лише періодично присутня, і це очікувана (і бажана) поведінка цього конкретного програмного забезпечення. Можливо, цільовий файл копіюється з іншої машини або хмари, він виконує свою функцію, а потім знову видаляється, лише для того, щоб бути замінена іншою програмою в наступному циклі.
Розбита Symlink також може бути симптомом встановлення програмного забезпечення, який не вдалося. У цьому випадку, замість того, щоб видалити Symlink, ви повинні або вручну виправити його або повторити установку.
Коли ви зафіксували розбиті посилання, потрібно зберегти, повторіть команду, щоб виконати пошук. Потім фіксовані симпюди повинні бути відсутніми в результатах пошуку.
Заради безпеки, найкраще обмежити вашу симпенцію, щоб усі, щоб ваші власні каталоги. Будьте надзвичайно обережні, щоб запустити ці команди як корінь, або системні каталоги.
Видалення зламаних Symlinks
Точний
-ECEC
(Виконати) Опція запускає команди на
знаходження
Результати пошуку. Ми будемо використовувати
рм
Щоб видалити кожну зламану симулю. Точний
{}
рядок замінюється на ім'я кожної зламаної симпатії, оскільки кожен знайдений
знаходження
.
Ми повинні використовувати комолону (
;
) Щоб припинити список команд, які ми хочемо
-ECEC
бігти. Ми будемо використовувати зворотний слеш (
\ T
) "уникнути" комолону, тому це трактується як частина
знаходження
команду, а не щось
Занурювач
повинні діяти.
Ми вводимо наступне:
Знайти. -xtype l-execc rm {}
Ми повернулися до командного рядка, без ознак того, що щось сталося. Щоб підтвердити, що розбиті посилання були видалені, ми повторюємо команду, щоб шукати їх, наступним чином:
Знайти. -xtype l
Немає ніяких відповідних результатів, що означає, що розбиті симпюди були видалені.
Спочатку не забувайте переглянути
Знову ж таки, завжди знайдіть час, щоб переглянути список Symlinks, перш ніж запускати команду, щоб видалити їх. Ви можете уникнути видалення будь-якого ви не впевнені, використовуючи команду, щоб видалити їх у відповідних каталогах.
Наприклад, вище, ми могли б запустити команду в каталозі ".snap", а потім вручну видалити самотню "Привіт" Symlink. Це було б залишити замком Firefox Symlink недоторканим.