记录:352
场景:在CentOS 7.9操作系统上,使用ln命令创建软链接(symbolic links)和硬链接(hard links)。解决:Too many levels of symbolic links。
版本:
操作系统:CentOS 7.9
1.命令应用
(1)目录创建软链接
命令:ln -s /home/apps/module/jdk1.8.0_281 /usr/java/default
解析:ln -s,创建软链接;目录/usr/java/default是软链接,指向/home/apps/module/jdk1.8.0_281目录;许多软件找jdk会到默认目录:/usr/java/default读取jdk相关数据;创建软链接后,自定义安装目录就满足了需求。创建软链接会有->符号标识。
![]()
(2)文件创建软链
命令:ln -s /home/apps/work01/aintro.txt /home/apps/work02/aintro.txt
解析:创建文件软链接,/home/apps/work01/aintro.txt是源文件;另一个是软链接。
![]()
(3)创建硬链接
命令:ln -P /home/apps/work01/bintro.txt /home/apps/work02/bintro.txt
解析:创建文件硬链接,/home/apps/work01/bintro.txt是源文件,另一个是硬链接。
![]()
2.解决报错
(1)问题一:Too many levels of symbolic links
问题原因:在/home/apps/work01目录下创建软链接,没有使用完整路径。
执行的命令:ln -s cintro.txt /home/apps/work02/cintro.txt
使用cat命令:cat cintro.txt,读取文件报错,读取不了文件。

解决:先删除有问题的软链接,再重新创建软链接。
删除命令:rm -rf /home/apps/work02/cintro.txt
重新创建命令:ln -s /home/apps/work01/cintro.txt /home/apps/work02/cintro.txt
2.命令帮助手册
命令:ln --help
解析:查看ln支持的全部命令和选项,在实际工作中,查看这个手册应该是必备之选。
- Usage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
- or: ln [OPTION]... TARGET (2nd form)
- or: ln [OPTION]... TARGET... DIRECTORY (3rd form)
- or: ln [OPTION]... -t DIRECTORY TARGET... (4th form)
- In the 1st form, create a link to TARGET with the name LINK_NAME.
- In the 2nd form, create a link to TARGET in the current directory.
- In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
- Create hard links by default, symbolic links with --symbolic.
- By default, each destination (name of new link) should not already exist.
- When creating hard links, each TARGET must exist. Symbolic links
- can hold arbitrary text; if later resolved, a relative link is
- interpreted in relation to its parent directory.
-
- Mandatory arguments to long options are mandatory for short options too.
- --backup[=CONTROL] make a backup of each existing destination file
- -b like --backup but does not accept an argument
- -d, -F, --directory allow the superuser to attempt to hard link
- directories (note: will probably fail due to
- system restrictions, even for the superuser)
- -f, --force remove existing destination files
- -i, --interactive prompt whether to remove destinations
- -L, --logical dereference TARGETs that are symbolic links
- -n, --no-dereference treat LINK_NAME as a normal file if
- it is a symbolic link to a directory
- -P, --physical make hard links directly to symbolic links
- -r, --relative create symbolic links relative to link location
- -s, --symbolic make symbolic links instead of hard links
- -S, --suffix=SUFFIX override the usual backup suffix
- -t, --target-directory=DIRECTORY specify the DIRECTORY in which to create
- the links
- -T, --no-target-directory treat LINK_NAME as a normal file always
- -v, --verbose print name of each linked file
- --help display this help and exit
- --version output version information and exit
-
- The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
- The version control method may be selected via the --backup option or through
- the VERSION_CONTROL environment variable. Here are the values:
-
- none, off never make backups (even if --backup is given)
- numbered, t make numbered backups
- existing, nil numbered if numbered backups exist, simple otherwise
- simple, never always make simple backups
-
- Using -s ignores -L and -P. Otherwise, the last option specified controls
- behavior when a TARGET is a symbolic link, defaulting to -P.
-
- GNU coreutils online help:
- For complete documentation, run: info coreutils 'ln invocation'
以上,感谢。
2022年11月28日