linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Файловая система/symbolic-link

kb/filesystem ── Файловая система ── beginner

Symbolic link

Symlink - отдельный файл-«ярлык», который содержит путь к цели. В отличие от [[hard-link]], это разные [[inode]], symlink может указывать на что угодно (включая несуществующее).

view as markdownaka: symlink, symlinks, soft-link

Что такое symbolic link

ln -s target name создаёт маленький файл name со специальным флагом «это symlink» и содержимым - строкой-путь к target. Это отдельный inode, со своими правами и временами.

Когда программа открывает symlink, ядро разыменовывает его - фактически работает с целью. Большинство syscall'ов прозрачны (open, stat, read/write). Но есть lstat который смотрит на сам symlink, не на цель.

Симлинк vs хардлинк

свойствоhard linksymbolic link
inodeтот же что у целисвой собственный
работает между FSнетда
на директориинетда
переживает удаление целида (содержимое живёт)нет (становится «битой»)
размер0 (ничего своего нет)длина пути в байтах
видим как «другой файл» в ls -liinode совпадаетдругой inode + «-> target»

Битые ссылки

Если цель удалена/переименована - symlink остаётся, но указывает в никуда:

bash
ln -s /no/such/path slink
ls -l slink   # видно red/italic в большинстве терминалов
cat slink     # No such file or directory

Чтобы найти все битые symlink'и в дереве:

bash
find /path -type l -! -exec test -e {} \; -print

Где встречается

  • /usr/bin/python3 → python3.12 (versioned alternatives via update-alternatives)
  • /etc/localtime → /usr/share/zoneinfo/<TZ>
  • В систем-юнитах: /etc/systemd/system/multi-user.target.wants/*.service → /lib/systemd/system/*.service
  • Атомарные deploy'и: текущая версия - symlink на конкретный релиз

§ команды

bash
ln -s /etc/passwd ~/users-link

Создать символическую ссылку на /etc/passwd

bash
readlink ~/users-link

Вывести чистый путь, на который указывает symlink

bash
readlink -f ~/users-link

-f: разыменовать рекурсивно до конца цепочки и вернуть абсолютный канонический путь

bash
ln -sfn /opt/app/v2 /opt/app/current

Атомарно переключить symlink на новую цель (-f: forced overwrite, -n: не следовать в существующий каталог)

§ см. также

  • inodeInodeInode - это запись в файловой системе с метаданными и указателями на блоки данных файла. Имя файла лежит отдельно (в директории) и просто указывает на inode.
  • hard-linkHard linkHard link - второе имя для того же [[inode]]. Оба имени равноправны: файл живёт пока есть хотя бы одно из них.
  • fhsFilesystem Hierarchy Standard (FHS)FHS - стандарт что лежит в каких корневых каталогах Linux: /etc - конфиги, /var - изменяемые данные, /usr - статика дистрибутива, /home - пользователи, /tmp - временное.

§ упоминается в уроках

  • ›beginner-02-files-and-text
  • ›beginner-03-inodes-and-links
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки