Вивчаємо linux, 101 робота з жорсткими і символічними посиланнями

Використання декількох імен для одного файлу

Ян Шилдс. Старший програміст, IBM

Про цю серії

Ця серія статей допоможе вам освоїти завдання адміністрування операційної системи Linux. Ви також можете використовувати матеріал цих статей для підготовки до іспитів першого рівня сертифікації професійного інституту Linux (LPIC-1).

Короткий огляд

З цієї статті ви дізнаєтеся про те, як створювати жорсткі і символічні посилання в Linux і працювати з ними. Ви навчитеся:

Необхідні умови

Щоб отримати найбільшу користь з наших статей, необхідно володіти базовими знаннями про Linux і мати працездатний комп'ютер з Linux, на якому можна буде виконувати всі зустрічаються команди. Іноді різні версії програм виводять результати по-різному, тому вміст лістингів і малюнків може відрізнятися від того, що ви побачите на вашому комп'ютері. Зокрема, результати виконання багатьох прикладів цієї статті сильно залежать від того, які пакунки вже були встановлені в операційній системі. Хоча результати, отримані у вашій операційній системі, можуть відрізнятися, ви повинні вловити найбільш важливі загальні моменти.

Зв'язок з Яном

Файли і директорії розташовуються на пристрої зберігання у вигляді набору блоків. Інформація про фото (така, як власник файлу, час останнього звернення до файлу, розмір файлу, права на читання або запис, чи є елемент файлом або Директорією) зберігається в індексному дескрипторі inode. Номер inode, відомий також як порядковий номер файлу. є унікальним в межах окремої файлової системи. Запис каталогу містить ім'я файлу (або директорії), а також покажчик на дескриптор inode, в якому зберігається інформація про цей файл (або директорії).

створення посилань

Спочатку я поясню, як створювати жорсткі і м'які посилання, а потім навчу вас знаходити і використовувати їх.

жорсткі посилання

Для створення додаткових жорстких посилань на існуючий файл (але не на директорію, навіть не дивлячись на те, що записи. І. Існують в системі у вигляді жорстких посилань) використовується команда ln.

Лістинг 1. Створення жорстких посилань

Якщо ви спробуєте створити жорстку посилання, що вказує на об'єкт за межами файлової системи, або жорстке посилання для директорії, то ви отримаєте помилку. З лістингу 2 видно, що моя домашня директорія і директорія research розташовуються в різних файлової системи, тому спроба створити для них жорсткі посилання закінчується невдачею, так само як і спроба створити жорстке посилання для директорії lpi104-6.

Лістинг 2. Помилки при створенні жорстких посилань

символічні посилання

Для створення символічних посилань використовується команда ln з опцією -s. При створенні символічних посилань використовуються імена файлів або директорій, які можуть бути як абсолютними, так і відносними. Якщо ви використовуєте відносні імена, то, як правило, мається на увазі, що створювані посилання будуть розташовуватися в поточній робочій директорії; в іншому випадку створюються вами посилання будуть відносними по відношенню до іншої точки файлової системи. У лістингу 3 показані два способи створення символічних посилань на файл file1, а також те, як замість двох жорстких посилань (які ми не змогли створити в лістингу 2) створити дві символічні посилання.

Лістинг 3. Створення символічних посилань

Як і раніше для звернення до файлу або директорії можна використовувати будь-які імена посилань або кінцевих файлів і директорій. У лістингу 4 наведені деякі приклади.

Лістинг 4. Використання символічних посилань

Тепер створимо символічне посилання, використовуючи відносні шляхи, коли наша робоча директорія не є директорією, в якій ми хочемо створити посилання. У наступному розділі ми подивимося, до чого це призведе.

Лістинг 5. Створення неправильної символічного посилання

визначення посилань

У попередньому розділі було показано, як створювати посилання, а тепер я поясню, як розрізняти їх.

Пошук інформації

Сьогодні в багатьох операційних системах для команди ls існує псевдонім ls --color = auto. який відображає різні типи об'єктів файлової системи різним кольором. Кольори кожного об'єкта можна налаштовувати. При використанні цієї опції жорсткі посилання можуть відображатися білим кольором на темно-синьому тлі, а символічні посилання - блакитним кольором на білому тлі, як показано на малюнку 1.

Малюнок 1. Використання опції --colors для визначення посилань

Хоча люди з хорошим зором можуть використовувати і розрізняти кольори, кому-то цей варіант не підійде; а використовувати кольори в командних сценаріях або програмах взагалі безглуздо. Якщо не брати до уваги колірний варіант, то вам буде потрібно більш детальна інформація, наприклад, інформація, що виводиться командою ls -l. У лістингу 6 ми явно заборонили виводити інформацію в кольорі, але зате завжди можна явно викликати команду / bin / ls.

Лістинг 6. Визначення посилань

Другий стовпець виведення в лістингу 6 містить лічильник посилань. показує кількість жорстких посилань на файл. Таким чином, ми бачимо, що файли file1, file3 і file3sub мають по кілька жорстких посилань, що вказують на представляються ними об'єкти; тим не менш, цієї інформації ще недостатньо, щоб зрозуміти, що всі вони являють собою один і той же об'єкт. Якщо видалити файл, лічильник посилань якого має значення більше 1, то лічильник посилань в індексному дескрипторі знизиться на 1, але файл не буде видалений, поки лічильник не досягне 0. Значення лічильників всіх інших жорстких посилань на цей файл знизяться на 1.

Для виведення номерів індексних дескрипторів inode файлів і директорій використовуйте команду ls з опцією -i. У лістингу 7 показаний як короткий, так і детальний висновок вмісту директорії lpi104-6.

Лістинг 7. Висновок інформації inode

Для пошуку символічних посилань можна також використовувати команду find з виразом -type l. як показано в лістингу 8.

Лістинг 8. Використання команди find для пошуку символічних посилань

Биті символічні посилання

У лістингу 5 ми створили свідомо неправильну символічне посилання. Це лише один з прикладів "битою" символічного посилання. Оскільки жорсткі посилання завжди вказують на дескриптор inode, що представляє собою файл, вони завжди дійсні. Однак символічні посилання можуть виявитися некоректними з багатьох причин, наприклад:

  • На момент створення посилання не існує або вихідного файлу, або цільового об'єкта цієї посилання (ситуація з лістингу 5).
  • Цільовий об'єкт посилання був видалений або перейменований.
  • Деякі елементи шляху до цільового об'єкту були видалені або перейменовані.

Жодна з цих причин не видає повідомлення про помилку, тому при створенні символічних посилань необхідно уважно продумати те, що може з ними статися. Зокрема, ваш вибір абсолютних або відносних шляхів повинен грунтуватися на тому, що може статися з об'єктом, на який ви посилаєтеся, за весь час життя посилання.

Якщо ви використовуєте кольоровий висновок вмісту директорій, то "биті" символічні посилання, як правило, відображаються червоним кольором на чорному тлі, як у випадку з файлом file6 (рисунок 1). В іншому випадку для розкриття інформації про заслання і її цільове об'єкті необхідно використовувати опцію -H або -L команди ls. Опція -H розкриває інформацію про посиланню, зазначеної в командному рядку, а опція -L додатково виконує ці ж дії для всіх посилань, які є частиною висновку. У лістингу 9 продемонстровані відмінності при використанні цих двох опцій.

Зверніть увагу на повідомлення про помилку, яке говорить про те, що файл file6 не існує, а також на рядок виведення з символами '?', Які дають зрозуміти, що цей файл не знайдений.

І останнє зауваження, що стосується "битих" символічних посилань. Всі спроби читання з файлу закінчаться невдачею, оскільки він не існує. Однак спроби записи в цей файл (при наявності необхідних дозволів) виявляться успішними, як показано в лістингу 10. Зауважте, що перш ніж ви зможете записати дані в файл, ви повинні створити директорію lpi104-6 / lpi104-6.

Лістинг 10. Читання і запис в биту символічне посилання

Пошук всіх посилань на об'єкт

Лістинг 11. Пошук всіх жорстких посилань на файл
Лістинг 12. Пошук всіх символічних посилань на файл або директорію

Як ви вже бачили, при оновленні файлу оновлюються і всі посилання на нього, чого не відбувається в разі його копіювання. Також пам'ятайте про те, що символічні посилання можуть виявитися "битими", але в результаті наступних операцій запису може бути створений новий файл. Будьте обережні при використанні посилань.

Посилання та адміністрування

Лістинг 13. Використання псевдонімів для різних версій команд

В інших випадках посилання можуть використовуватися тоді, коли кілька команд з різними іменами використовують однаковий код, що лежить в їх основі; наприклад, це можуть бути різні команди для зупинки і перезавантаження системи. Іноді нове ім'я команди, наприклад genisofs, заміщає собою старе ім'я цієї ж команди (mkisofs), яке продовжує використовуватися в якості посилання на нову команду. Посилання активно використовуються системою альтернатив, дозволяючи вам вибирати для використання одну з декількох альтернативних команд, таких як java. Деякі приклади наведені в лістингу 14.

Лістинг 14. Приклади використання псевдонімів команд
Лістинг 15. Посилання на бібліотеки

Для отримання додаткової інформації про використання посилань зверніться до man-сторінок команди ln і інших команд з цього керівництва.

Схожі статті