В моем CentOS 7.2 символическая ссылка не является целым каталогом.

Вопрос или проблема

Это руководство показывает:

введите описание изображения здесь

Вы можете увидеть /application/nginx -> /application/nginx-1.8.0

Но я следую шагам:


[root@localhost nginx-1.8.0]# ll /application/nginx
lrwxrwxrwx. 1 root root 12 19 мая 04:01 /application/nginx -> nginx-1.8.0/

Это nginx-1.8.0/, нет /application перед ним, и конечно же nginx-1.8.0 является символической ссылкой в /application.

Моя операционная система – Cnet OS 7.2

Операционная система в уроке – Cent OS 6.8

Является ли разница в уроке системной причиной?

Это классическая ошибка – перепутать цели при использовании команды ln.

Убедитесь, что вы используете ln <target> <linkname> и посмотрите, сработает ли это.

Первоначальный пост мог бы быть немного яснее, так что это вся помощь, которую я могу дать.

Если вы пытаетесь просмотреть содержимое каталога, вам нужно добавлять косую черту в конце при указании пути. Вот так:

ll /application/nginx/

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

Создает абсолютную ссылку:

ln -s /application/nginx-1.8.0 /application/nginx

nginx всегда будет разрешаться в /application/nginx-1.8.0, даже если вы переместите nginx в новую директорию.

Используйте абсолютную ссылку, если nginx может переместиться, а /application/nginx-1.8.0 никогда не переместится.

Создает относительную ссылку:

ln -s nginx-1.8.0 /application/nginx

nginx всегда будет разрешаться в nginx-1.8.0 в той директории, в которой находится nginx

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

Используйте эту относительную ссылку, если nginx всегда будет существовать в той же директории относительно nginx-1.8.0

Больше примеров относительных ссылок

ln -s ../real alpha      # alpha всегда будет указывать на real в родительской директории alpha
ln -s real alpha         # alpha всегда будет указывать на real в директории alpha
ln -s subdir/real alpha  # alpha всегда будет указывать на subdir/real в директории alpha

Ответ или решение

Создание символических ссылок в операционных системах семейства Linux, таких как CentOS 7.2, может вызывать некоторые трудности, особенно если вы привыкли к другому поведению в версиях, таких как CentOS 6.8. В этом ответе мы рассмотрим, как правильно создавать символические ссылки, особенности относительных и абсолютных ссылок, а также то, как ваша проблема может быть связана с неправильной трактовкой пути.

Понимание символических ссылок

Символические ссылки (или символики) — это специальные файлы, которые ссылаются на другие файлы или каталоги. Есть два типа ссылок: абсолютные и относительные.

  • Абсолютная ссылка указывает полный путь к целевому файлу или каталогу. Например:

    ln -s /application/nginx-1.8.0 /application/nginx

    Эта команда создаёт символическую ссылку nginx, которая всегда будет указывать на /application/nginx-1.8.0, независимо от местоположения текущего каталога.

  • Относительная ссылка указывает путь, который относителен к текущему каталогу, где вы находитесь:

    ln -s nginx-1.8.0 /application/nginx

    В этом случае символическая ссылка nginx будет указывать на nginx-1.8.0, если вы находитесь в каталоге /application.

Основные причины вашей проблемы

Судя по вашему описанию, вы создали символическую ссылку, но путь к целевой директории указан относительно текущего каталога, а не абсолютным образом. Поскольку операционная система CentOS 7.2 интерпретирует пути согласно правилу, когда ссылка создается относительно каталога, она не включает полный путь.

Когда вы выполнили:

ln -s nginx-1.8.0 /application/nginx

Как результат, ссылка была создана так, что она относительная. Поэтому, если выполнить команду:

ll /application/nginx

вы увидите, что ссылка указывает на nginx-1.8.0/, без полного пути.

Рекомендации по исправлению

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

  1. Запустите команду в терминале:

    ln -s /application/nginx-1.8.0 /application/nginx

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

  2. Убедитесь, что у вас есть достаточные права доступа к обоим каталогам. Если необходимо, используйте учетную запись с правами администратора.

  3. Чтобы проверить правильность ссылки, выполните следующую команду:

    ls -l /application/nginx

    Вы должны увидеть символьную ссылку, указывающую на /application/nginx-1.8.0.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...