Вопрос или проблема
Это руководство показывает:
Вы можете увидеть /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/
, без полного пути.
Рекомендации по исправлению
Чтобы создать символическую ссылку с полным путем, выполните следующее:
-
Запустите команду в терминале:
ln -s /application/nginx-1.8.0 /application/nginx
Это создаст абсолютно правильную символическую ссылку, которая всегда будет указывать на нужный каталог, независимо от вашей текущей директории.
-
Убедитесь, что у вас есть достаточные права доступа к обоим каталогам. Если необходимо, используйте учетную запись с правами администратора.
-
Чтобы проверить правильность ссылки, выполните следующую команду:
ls -l /application/nginx
Вы должны увидеть символьную ссылку, указывающую на
/application/nginx-1.8.0
.
Заключение
Символические ссылки являются мощным инструментом для управления файлами и каталогами в Linux. Понимание разницы между относительными и абсолютными ссылками поможет вам избежать ошибок. Если вы создаете символические ссылки, основанные на структуре вашего приложения, старайтесь использовать абсолютные пути, чтобы избежать путаницы в дальнейшем, особенно при перемещении файлов между директориями. Если у вас возникли дополнительные вопросы или проблемы с символическими ссылками, не стесняйтесь обращаться за помощью.